使用Enum.TryParse时,我遇到了意外的行为。

如果我有一个枚举:

public enum MyEnum
{
  ValueA,
  ValueB,
  ValueC
}

然后将数值(作为字符串)传递给Enum.TryParse,例如:
MyEnum outputEnum;
bool result = Enum.TryParse("1234", out outputEnum);

尽管字符串“1234”不是一个可能的值,结果将返回为true,并且我的outputEnum的值为1234。

有没有办法可以避免这种行为?我正在尝试编写一个将任意字符串输入作为枚举处理的函数,这在我的错误输入检测中抛出了一个monkeywrench。

最佳答案

此行为是设计使然。

documentation说:



调用Enum.IsDefined来证明您解析的值实际上存在于此特定enum中。

如果要处理[Flags]枚举(位掩码),它将变得更加复杂。

关于c# - Enum.TryParse对任何数值返回true,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6741649/

10-12 04:20