为什么该测试通过? TestEnum不包含和值为“5”的选项。因此,该测试应该会失败,但不会失败。
private enum TestEnum
{
FirstOption = 2,
SecontOption = 3
}
[Test]
public void EnumTryParseIntValue()
{
TestEnum enumValue;
bool result = Enum.TryParse<TestEnum>(5.ToString(), out enumValue);
Assert.IsTrue(result);
}
最佳答案
Enum.TryParse Method (String, TEnum)
“返回其基础值为将值转换为整数类型的枚举成员”
如果不存在该值,则返回整数。我不认为让5成为“枚举成员”,但这就是它的工作原理。如果您解析2,则将获得FirstOption。
if (Enum.IsDefined(typeof(TestEnum), 5.ToString()))
{
result = Enum.TryParse<TestEnum>(5.ToString(), out enumValue);
Debug.WriteLine(result);
if (result)
{
Debug.WriteLine(enumValue.ToString());
}
}