说我有这个枚举:
enum GradeEnum
{
A = 1,
B = 2,
C = 3,
}
然后我做
GradeEnum grade = (GradeEnum)Enum.Parse(typeof(GradeEnum),"234");
然后没有触发错误,等级变量值为234
。但是,如果我按照预期与GradeEnum的值进行比较,则grade
变量的值不匹配。
问题,为什么Parse
方法没有触发异常?
答案 0 :(得分:5)
您应该使用Enum.IsDefined
来检查枚举是否已定义。
为了解析并验证您需要两种方法。
GradeEnum grade = (GradeEnum)Enum.Parse(typeof(GradeEnum), "234");
if (!Enum.IsDefined(typeof(GradeEnum), grade))
; // throw exception
或者使用评论中提到的TryParse,忘记了!
string gradeValue = "234";
GradeEnum grade;
if (Enum.TryParse(gradeValue, out grade))
{
// success
}