【问题标题】:Why this code is everytime generating 0000-0000 as guid? [duplicate]为什么这段代码每次都生成 0000-0000 作为 guid? [复制]
【发布时间】:2015-02-13 07:43:07
【问题描述】:

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

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

        }

【问题讨论】:

标签: c#


【解决方案1】:

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

  Guid.NewGuid()

默认为空白。

【讨论】:

    【解决方案2】:
    new Guid();
    

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

    来自MSDN 文档:

    初始化 Guid 结构的新实例。

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

    Guid.NewGuid();
    

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

    if (myGuid == Guid.Empty())
    

    旁白

    这是另一个有趣的 sn-p,有人告诉我,值类型总是使用 == 来进行相等比较,而对于引用类型,你可以使用 .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()感兴趣

    【讨论】:

      猜你喜欢
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 2022-08-07
      相关资源
      最近更新 更多