0

假设我有int val = 1;什么是检查该值是否与枚举对应的最佳方法。这是一个示例枚举:

public enum AlertType 
{ 
    Success=1, 
    Warning=2, 
    Error=3 
};

我正在寻找具有最佳可维护性的答案。

4

5 回答 5

9

我认为您正在寻找Enum::IsDefined 方法

返回指定枚举中是否存在具有指定值的常量的指示。

更新:-

尝试这样的事情: -

 if(Enum.IsDefined(typeof(AlertType), val)) {}
于 2013-08-29T19:19:42.730 回答
1

这应该有效:

Int32 val = 1;
if (Enum.GetValues(typeof(AlertType)).Cast<Int32>().Contains(val))
{
}
于 2013-08-29T19:19:18.880 回答
0

您可以将您enum的选择转换int为该检查:

const int val = 1;
if (val == (int)AlertType.Success)
{
    // Do stuff
}
else if (val == (int) AlertType.Warning)
{
    // Do stuff
}
else if (val == (int) AlertType.Error)
{
    // Do stuff
}
于 2013-08-29T19:18:04.177 回答
0

除了提供的其他解决方案之外,这里还有另一种简单的检查方法:

Enum.GetName(typeof(AlertType), (AlertType)val) != null
于 2013-08-29T19:20:33.930 回答
0
if (Enum.IsDefined(typeof(AlertType), x))
{
    var enumVal = Enum.Parse(typeof(AlertType), x.ToString());
}
else
{
    //Value not defined
}
于 2013-08-29T19:23:11.630 回答