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/

10-13 08:03
查看更多