使用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/