the*_*oop 0 c# enums nullable object-model
枚举通常用于定义类的特定属性的状态,比如在某种对象模型中.对于其中一些属性,状态'此属性未设置'是有效的.
在这些情况下,我应该使用零None枚举值,还是使属性类型可以为空?
public MyEnum Property { get; set; }
public enum MyEnum {
None = 0,
Value1,
Value2
}
Run Code Online (Sandbox Code Playgroud)
要么
public MyEnum? Property { get; set; }
public enum MyEnum {
Value1,
Value2
}
Run Code Online (Sandbox Code Playgroud)
使用MyEnum.None- 它更具表现力,甚至MyEnum.Invalid传达意义.
您还可以将其设置为0以外的其他值 - 因为它基于int,您可以将其设置为-1,将第一个有效值设置为1:
public enum MyEnum {
InvalidValue = -1,
Value1 = 1,
Value2
}
Run Code Online (Sandbox Code Playgroud)
在您的代码中,您可以轻松检查传入的值并引发描述性异常.
可预期的枚举类型不是预期的,也不那么具有表现力.它要求您的代码用户知道这一点并检查空值.