为什么这段代码每次生成0000-0000作为guid?
static int Main(string[] args)
{
Guid obj = new Guid();
Console.WriteLine("New Guid is " + obj.ToString());
Console.ReadLine();
}
答案 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()