检查字符串是否是枚举的实例

时间:2012-08-22 11:14:27

标签: c#

我有以下enum声明:

enum MyType
{
   Boolean,
   Int,
   Double,
   String
}

然后,如果我有string abc = "anyvalue",我如何检查abc值是bool,int,double还是对应于myType枚举值的字符串?

2 个答案:

答案 0 :(得分:6)

您可以使用Enum.TryParse方法。如果将值成功解析为其中一个枚举值,同时还输出已解析的枚举值,则返回true。

如果要在执行解析时忽略大小写,请使用接受布尔参数的重载。

MyType type;
if (Enum.TryParse(abc, out type))
{
    // can be parsed
    switch (type)
   {
       case MyType.Boolean: break;
       case MyType.Int: break;
       case MyType.Double: break;
       case MyType.String: break;
   }
}

也可以使用Enum.IsDefined,但此方法始终执行区分大小写的搜索,因此它不如Enum.TryParse灵活,只能用于知道名称是否已定义。 / p>

答案 1 :(得分:0)

使用此:

MyType dummy;
if(bool isEnum = Enum.TryParse(mystring,out dummy))
{
// mystring is a valid enum 
}