0

我有以下enum声明:

enum MyType
{
   Boolean,
   Int,
   Double,
   String
}

那么如果我有 a string abc = "anyvalue",我如何检查该abc值是对应于myType枚举值的 bool、int、double 还是 string?

4

2 回答 2

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并且只能用于了解名称是否已定义。

于 2012-08-22T11:15:37.050 回答
0

用这个:

MyType dummy;
if(bool isEnum = Enum.TryParse(mystring,out dummy))
{
// mystring is a valid enum 
}
于 2012-08-22T11:16:31.843 回答