C#.NET 4.5,Windows 10,我具有以下枚举:
private enum Enums
{
A=1, B=2, C=3
}
这个程序的行为很奇怪:
public static void Main()
{
Enums e;
if (Enum.TryParse("12", out e))
{
Console.WriteLine("Parsed {0}", e);
}
else
{
Console.Write("Not parsed");
}
Console.ReadLine();
}
我希望TryParse方法的结果为false,但令我惊讶的是
控制台显示“Parsed 12”。
在“监视”窗口中,它甚至显示值是“12”,并且是枚举类型!
对于我尝试过的任何数字字符串(例如“540”)都是如此,但对于包含字母的字符串(“A12”,“12A”)则不是。
我可以通过首先检查它是否仅为数字的字符串来轻松地克服此问题,但是为什么这样做呢?
是设计使然吗?
谢谢!
我愿意
最佳答案
在内部,枚举存储为整数,因此这可能就是TryParse对于传入的整数返回true的原因。
关于为什么任何整数都起作用,这是设计使然。从MSDN(重点是我):
关于c# - C#Enum.TryParse解析无效的数字字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35117265/