c#从long解析枚举

c#从long解析枚举,c#,enums,long-integer,C#,Enums,Long Integer,我有一个从long继承的枚举,并将其用作我的应用程序中的标志 我刚刚注意到,我无法解析大于int.MaxValue的值,我是做错了还是不支持 例如 你知道如何得到正确的结果吗?这样做,你就会明白问题的原因:Console.WriteLine((int)A.Blue)。现在编写Blue=1L这样做,您将看到问题的原因:Console.WriteLine((int)A.Blue)。现在写入Blue=1L using System; public class Program { public

我有一个从long继承的枚举,并将其用作我的应用程序中的标志

我刚刚注意到,我无法解析大于int.MaxValue的值,我是做错了还是不支持

例如


你知道如何得到正确的结果吗?

这样做,你就会明白问题的原因:
Console.WriteLine((int)A.Blue)。现在编写
Blue=1L这样做,您将看到问题的原因:
Console.WriteLine((int)A.Blue)。现在写入
Blue=1L
using System;

public class Program
{
    public static void Main()
    {

        foreach (var option in Enum.GetValues(typeof (A))) {
            Console.WriteLine((long)option + " = " + option);
        }

        foreach (var option in Enum.GetNames(typeof(A))) {
            var name = option;
            var val = Enum.Parse(typeof(A),name);
            Console.WriteLine(option + " is " + ((long)val));
        }

    }

    public enum A : long {      
        Red = 1 << 0,
        Blue = 1 << 32,
        Green = 1 << 33
    }
}
1 = Blue
1 = Blue
2 = Green
Red is 1
Blue is 1
Green is 2