我有一个像这样的枚举属性的类:
public class Foo
{
public Color ColorType {get;set;}
}
public enum Color
{
Red,
Green,
}
现在这个类可以像这样初始化:
var foo = new Foo();
没有设置 ColorType 属性。 现在,我正在尝试创建一个方法并对是否设置过该枚举执行操作,例如我有一个方法
private void checkEnum(Foo foo)
{
if(foo.ColorType !=null)
{
//perform these actions
}else
{
//perform those actions
}
}
但是我收到一条警告说该值永远不会为 null 并且经过进一步研究,如果从未设置枚举 if 将默认为第一个值 在我的例子中是红色的,我正在考虑向我的枚举添加一个“未设置”的值并将该值设为第一个,所以如果它还没有被设置 枚举的值为“未设置”,是否有更好的方法,我提出的方法似乎会变得困惑
最佳答案
您可以使用以下两种方法之一:默认枚举值或可为空的枚举。
默认枚举值
由于枚举由整数支持,并且 int
默认为零,因此默认情况下枚举将始终初始化为等于零的值。除非您显式分配枚举值,否则第一个值将始终为零,第二个将为一,依此类推。
public enum Color
{
Undefined,
Red,
Green
}
// ...
Assert.IsTrue(Color.Undefined == 0); // success!
可空枚举
另一种处理未分配枚举的方法是使用可为空的字段。
public class Foo
{
public Color? Color { get; set; }
}
// ...
var foo = new Foo();
Assert.IsNull(foo.Color); // success!
关于c# - 如何判断枚举属性是否已设置? C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16554577/