可能重复:
C# int, Int32 and enum's
C#允许您将枚举的基础类型设置为long。但是,当您尝试编译以下两个语句时,您将如何解释行为上的差异:
public enum Colors : long
{
Blue = 512L,
Purple = 1024L
}
和
public enum Colors : System.Int64
{
Blue = 512L,
Purple = 1024L
}
第一个编译oK(使用:long),而第二个(使用:System.Int64)不会编译 - 你得到一个错误:键入byte,sbyte,short,ushort,int,uint,long,或ulong预期注意:显然,我理解错误信息。令我感到困惑的是,我认为“长”或多或少是“Int64”的别名
答案 0 :(得分:2)
这是C#编译器的限制,并且不会在Enum
上对此进行支持。您必须使用long
。 Alex Turner(Visual Basic和C#的项目经理)在MSFT上:
微软于2010年6月25日上午8:53发布 感谢您对Visual Studio的建议!
正如你所指出的那样,我们可以支持在这里说Int16而不是int,但是这不会为C#程序提供任何额外的表现力(而且输入的字符更多!)。我们不太可能投入我们的资源来为Enums添加这种支持。