【问题标题】:What is the default value for Guid?Guid 的默认值是多少?
【发布时间】:2015-09-07 18:27:08
【问题描述】:

int 的默认值为 0,string 的默认值为 "",boolean 的默认值为 false。有人可以澄清guid 的默认值是什么吗?

【问题讨论】:

标签: c# .net guid default-value


【解决方案1】:

您可以使用这些方法来获取一个空的 guid。结果将是一个所有数字均为 0 的 guid -“00000000-0000-0000-0000-000000000000”。

new Guid()

default(Guid)

Guid.Empty

正如 Use Keim 在 cmets 中指出的那样,defaultdefault(Guid) 的缩写

【讨论】:

  • 在较新的 C# 版本中,default(Guid)default 也是相同的。
  • Guid.Empty 不能用作编译时间常数。所以你不能用它来默认一个参数。
【解决方案2】:

您可以使用Guid.Empty。它是Guid结构的read-only instance,值为00000000-0000-0000-0000-000000000000

你也可以用这些来代替

var g = new Guid();
var g = default(Guid);

注意不要使用Guid.NewGuid(),因为它会生成一个新的Guid。

使用您和您的团队认为更具可读性的上述选项之一并坚持下去。不要在代码中混合使用不同的选项。我认为Guid.Empty 是最好的,因为new Guid() 可能会让我们认为它正在生成一个新的guid,有些人可能不知道default(Guid) 的价值是什么。

【讨论】:

    【解决方案3】:

    GUID 的默认值为空。 (例如:00000000-0000-0000-0000-000000000000)

    这可以使用Guid.Emptynew Guid() 调用

    如果您想要新的 GUID,请使用 Guid.NewGuid()

    【讨论】:

    • @anchor 我注意到您从未接受过任何问题的答案。 Here - in the FAQ of StackExchange 您可以阅读如何接受答案以及为什么要这样做。
    • @Genhis 我认为他得到了他需要的东西然后从地球表面掉了下来哈哈
    【解决方案4】:

    要扩展上述答案,您不能在方法、索引器或委托定义中使用带有 Guid.Empty 的 Guid 默认值作为 optional argument,因为它会给您带来编译时错误。请改用default(Guid)new Guid()

    【讨论】:

      【解决方案5】:

      使用类创建空 Guid新 Guid...

      Guid 的默认值为 00000000-0000-0000-0000-000000000000

      public class clsGuid  ---This is class Name
      {
          public Guid MyGuid { get; set; }
      }
      
      static void Main(string[] args)
              {
                  clsGuid cs = new clsGuid();   
                  Console.WriteLine(cs.MyGuid); --this will give empty Guid  "00000000-0000-0000-0000-000000000000"
      
                  cs.MyGuid = new Guid();
                  Console.WriteLine(cs.MyGuid); ----this will also give empty Guid  "00000000-0000-0000-0000-000000000000"
      
                  cs.MyGuid = Guid.NewGuid();
                  Console.WriteLine(cs.MyGuid); --this way, it will give new guid  "d94828f8-7fa0-4dd0-bf91-49d81d5646af"
      
                  Console.ReadKey(); --this line holding the output screen in console application...
              }
      

      【讨论】:

      • 是的...您可以将类值设为静态值...或在类中使用它..
      • 我知道我们可以使用 Guid,因为我们可以在 C# 中使用任何其他类型。我的问题是,您的答案是否包含以前不存在的任何新信息。您发布的所有信息似乎在几年前就已经被其他多个人发布了。
      • 是的...你的权利...我告诉那个...你可以使用空的 guid 和新的 guid 使用一个类...那种类型的答案不存在...在这个问题...
      • 格式可以改进,特别是 cmets 应该以 // 开头。否则,这是一个很好的答案,因为它专门显示了自定义类中的用法。
      猜你喜欢
      • 1970-01-01
      • 2014-10-20
      • 2018-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2023-04-07
      相关资源
      最近更新 更多