我有以下的枚举,我想知道我是否有像 string = March 这样的变量 有一种简单的方法可以通过API查找值(March)是否是枚举
的一部分public enum Month
{
NotSet = 0,
January = 1,
February = 2,
March = 3,
April = 4,
May = 5,
June = 6,
July = 7,
August = 8,
September = 9,
October = 10,
November = 11,
December = 12
}
答案 0 :(得分:5)
您可以执行以下操作:
Month result;
if(System.Enum.TryParse(value, true, out result)) {
// is defined
}
其中true
控制区分大小写(或不区分大小)。
(请注意,这实际上是TryParse<Month>(...)
,但编译器会推断<Month>
中的out result
,因为result
定义为Month
)
答案 1 :(得分:4)
如果您只是想知道枚举中是否定义了某个值,请使用Enum.IsDefined
:
bool isDefined = Enum.IsDefined(typeof(Month), "March")
如果要解析该值,请查看Enum.TryParse
:
将一个或多个枚举常量的名称或数值的字符串表示形式转换为等效的枚举对象。返回值表示转换是否成功。
您可以使用以下重载...
public static bool TryParse<TEnum>(
string value,
bool ignoreCase,
out TEnum result
)
...像这样:
Month month;
if (Enum.TryParse<Month>("March", true, out month)) {
// ...
}
答案 2 :(得分:3)
如何使用Enum.GetNames
检索指定的常量名称数组 枚举。
像;
bool b = Enum.GetNames(typeof(Month)).Contains("March");
或作为Raphaël mentioned ;
if(Enum.GetName(typeof(Month), "March") != null)