为什么这甚至可能?这是一个错误吗?
using System;
public class InvalidEnumParse
{
public enum Number
{
One,
Two,
Three,
Four
}
public static void Main()
{
string input = "761";
Number number = (Number)Enum.Parse(typeof(Number), input);
Console.WriteLine(number); //outputs 761
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 14
这就是枚举在.NET中运行的方式.枚举不是限制性的一组值,它实际上只是数字的一组名称(以及一起收集这些名称的类型) - 我同意这有时会很痛苦.
如果要测试枚举中是否确实定义了值,可以Enum.IsDefined在解析后使用.如果您想以更安全的方式执行此操作,您可能需要查看包含一系列约束泛型方法的Unconstrained Melody项目.