为什么没有Guid.IsNullOrEmpty()方法

这让我想知道为什么.NET中的Guid没有IsNullOrEmpty()方法(其中空表示全零)

在编写REST API时,我需要在ASP.NET MVC代码中的几个地方使用它。

还是我错过了一些东西,因为互联网上没有人要求这样做?

Guid是一个值types ,所以Guid types的variables不能为null。 如果你想知道它是否与空的GUID相同,你可以使用:

 if (guid == Guid.Empty) 

首先, Guid是不可空的。 你可以检查:

 myGuid == default(Guid) 

相当于:

 myGuid == Guid.Empty 

这是一个可空的Guid的简单扩展方法。

 /// <summary> /// Determines if a nullable Guid (Guid?) is null or Guid.Empty /// </summary> public static bool IsNullOrEmpty(this Guid? guid) { return (!guid.HasValue || guid.Value == Guid.Empty); } 

UPDATE

如果你真的想在任何地方使用它,你可以写一个常规Guid的扩展方法。 它永远不可能是空的,所以有些人不会喜欢这个…但它符合你所寻找的目的,你不必知道你是否在使用Guid? 或Guid(很好重新分解等)。

 /// <summary> /// Determines if Guid is Guid.Empty /// </summary> public static bool IsNullOrEmpty(this Guid guid) { return (guid == Guid.Empty); } 

现在你可以使用someGuid.IsNullOrEmpty(); 在所有情况下,无论您是使用Guid还是Guid?

就像我说的,有些人会抱怨命名,因为IsNullOrEmpty()意味着值可能是空的(当它不能)。 如果你真的想,为其他扩展名如IsNothing()IsInsignificant()或其他:)

你可以做一个扩展方法来Guid添加IsEmptyfunction:

 public static class GuidEx { public static bool IsEmpty(this Guid guid) { return guid == Guid.Empty; } } public class MyClass { public void Foo() { Guid g; bool b; b = g.IsEmpty(); // true g = Guid.NewGuid(); b = g.IsEmpty; // false b = Guid.Empty.IsEmpty(); // true } }