c# - 如何判断枚举属性是否已设置? C#

标签 c# properties enums set

我有一个像这样的枚举属性的类:

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/

相关文章:

python - 枚举和命名元组有什么区别?

c# - 读取 JPEG 元数据时出现问题(方向)

c# - 如何在特定位置呈现用户控件子项?

c# - C#-编译器错误: System.Configuration.ConfigurationErrorsException was unhandled

c# - 如何使用 ffmpeg.exe 命令行从硬盘上的图像数量创建视频文件?

properties - 如何使用 SoapUI 在我的 JSON 输入请求中使用全局属性名称?

PowerShell 成员 : explanation for Methods and Properties?

Javascript 对象在赋值后丢失属性

java - 如何将字符串转换为枚举,然后先转换为大写?

mysql - 如何从索引中获取枚举元素