我有以下enum
声明:
enum MyType
{
Boolean,
Int,
Double,
String
}
那么如果我有 a string abc = "anyvalue"
,我如何检查该abc
值是对应于myType
枚举值的 bool、int、double 还是 string?
我有以下enum
声明:
enum MyType
{
Boolean,
Int,
Double,
String
}
那么如果我有 a string abc = "anyvalue"
,我如何检查该abc
值是对应于myType
枚举值的 bool、int、double 还是 string?
你可以使用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
并且只能用于了解名称是否已定义。
用这个:
MyType dummy;
if(bool isEnum = Enum.TryParse(mystring,out dummy))
{
// mystring is a valid enum
}