我有
Enum eNUM
{
one,Two,Three
}
我有一个UserDefinedString。例如:Four
我想检查eNUm
中是否存在用户定义的字符串。我试过
eNUM _num;
if (Enum.TryParse<eNUM>("UserDefinedString", out _num))
{
//do some thing
}
我也尝试过:
if (Enum.IsDefined(typeof(eNUM), "UserDefinedString"))
这对我不起作用
答案 0 :(得分:1)
尝试解析时,请确保它是完全匹配。如果您知道枚举仅包含小写值,则可以通过在比较之前强制大小写来使生活更轻松,例如:
Enum eNUM
{
one, two, three ...
}
...
eNUM num;
string findThisValue = "OnE"; // Odd casing...
if (Enum.TryParse(findThisValue.ToLower(), out num))
{
// Do something with num
}
答案 1 :(得分:1)
尝试
Enum.GetNames(typeof(eNUM));
这会将enum中的所有值作为字符串,然后您可以使用linq函数检查您的密钥,例如Contains或Any
答案 2 :(得分:0)
第一个例子有效:
if (Enum.TryParse<eNUM>("Four", out _num))
{
//do some thing
}
else
{
// invalid enum value
}
使用Four
调用此内容时,您将进入else
分支。使用Two
进行通话时,它可以正常工作。
如果您想忽略大小写,可以将TryParse
的第二个参数设置为true
。