Enum.Parse在预期时不会触发异常

时间:2017-08-25 14:21:53

标签: c# .net

说我有这个枚举:

enum GradeEnum
{
    A = 1,
    B = 2,
    C = 3,
}

然后我做

GradeEnum grade = (GradeEnum)Enum.Parse(typeof(GradeEnum),"234");

然后没有触发错误,等级变量值为234。但是,如果我按照预期与GradeEnum的值进行比较,则grade变量的值不匹配。

问题,为什么Parse方法没有触发异常?

1 个答案:

答案 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
}