我正在尝试编写可空枚举的扩展方法。
就像这个例子:
// ItemType is an enum
ItemType? item;
...
item.GetDescription();
所以我写了这个方法,但由于某些我不理解的原因,它无法编译:
public static string GetDescription(this Enum? theEnum)
{
if (theEnum == null)
return string.Empty;
return GetDescriptionAttribute(theEnum);
}
我在Enum?
上遇到了以下错误:
只有非可空值类型才能作为system.nullable的基础类型。
为什么?因为枚举类型不能有null
值!
更新:
如果有很多枚举类型,ItemType
只是其中一个示例。
Test?
和Nullable<Test>
都可以获得智能感知。 (VS2010) - Rawlingenum
зұ»еһӢеҲ°System.Enum
зҡ„иЈ…з®ұиҪ¬жҚў - Rawlingq
为空时,我在q.GetDescription()
和q?.GetDescription()
中得到了不同的结果。前者是预期的,但后者返回了default(Test)
的描述。有人能帮忙解释一下吗? - Scottq.GetDescription()
调用GetDescription(q)
即使q
为空。q?.GetDescription()
如果q
非空,则调用GetDescription(q)
,但如果q
为空,则返回GetDescription
的返回类型的默认值。 - Rawling