为什么这段代码每次生成0000-0000作为guid?

时间:2014-12-15 08:44:59

标签: c#

为什么这段代码每次生成0000-0000作为guid?

 static int Main(string[] args)
        {
            Guid obj = new Guid();
            Console.WriteLine("New Guid is " + obj.ToString());
            Console.ReadLine();

        }

2 个答案:

答案 0 :(得分:8)

你需要注意以获得新的Guid。

  Guid.NewGuid()

默认为空白。

答案 1 :(得分:4)

new Guid();

这只是实例化一个新的Guid结构。它不会为它生成任何值。

来自MSDN文档:

  

初始化Guid结构的新实例。

每次使用新值获取新的GUID:

Guid.NewGuid();

要测试您是否有新的Guid,可以使用Guid.Empty

if (myGuid == Guid.Empty())

<强> 除了

这是另一个有趣的片段,我被告知值类型始终使用==进行相等比较,对于参考类型,您可以.Equals()。但是,在Guid实现的引擎下,使用.Equals()

似乎非常安全
    public bool Equals(Guid g)
    {
        // Now compare each of the elements
        if(g._a != _a)
            return false;
        if(g._b != _b)
            return false;
        if(g._c != _c)
            return false;
        if (g._d != _d)
            return false;
        if (g._e != _e)
            return false;
        if (g._f != _f)
            return false;
        if (g._g != _g)
            return false;
        if (g._h != _h)
            return false;
        if (g._i != _i)
            return false;
        if (g._j != _j)
            return false;
        if (g._k != _k)
            return false;

        return true;
    }

我不知道其他人,我一直对你是否应该==.Equals()

感兴趣