为什么没有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 } }