说我有int val = 1;
检查该值是否与枚举相对应的最佳方法是什么。这是一个enum示例:
public enum AlertType
{
Success=1,
Warning=2,
Error=3
};
我正在寻找具有最佳可维护性的答案。
答案 0 :(得分:9)
我认为您正在寻找Enum::IsDefined Method
返回指示是否存在具有指定值的常量的指示 在指定的枚举中。
<强>更新: - 强>
尝试这样的事情: -
if(Enum.IsDefined(typeof(AlertType), val)) {}
答案 1 :(得分:1)
这应该有效:
Int32 val = 1;
if (Enum.GetValues(typeof(AlertType)).Cast<Int32>().Contains(val))
{
}
答案 2 :(得分: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
}
答案 3 :(得分:0)
除了提供的其他解决方案之外,还有另一种简单的检查方法:
Enum.GetName(typeof(AlertType), (AlertType)val) != null
答案 4 :(得分:0)
if (Enum.IsDefined(typeof(AlertType), x))
{
var enumVal = Enum.Parse(typeof(AlertType), x.ToString());
}
else
{
//Value not defined
}