为什么此代码每次都生成 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();
}
您必须执行以下操作才能获得新的 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()