为什么此代码每次都生成 0000-0000 作为 guid

本文关键字:0000-0000 作为 guid 代码 为什么 | 更新日期: 2023-09-27 18:34:17

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

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

为什么此代码每次都生成 0000-0000 作为 guid

您必须执行以下操作才能获得新的 Guid。

  Guid.NewGuid()

默认情况下,它是空白的。

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()

感兴趣