将枚举的基础类型更改为long

时间:2011-09-22 07:26:22

标签: c#

  

可能重复:
  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”的别名

1 个答案:

答案 0 :(得分:2)

这是C#编译器的限制,并且不会在Enum上对此进行支持。您必须使用long Alex Turner(Visual Basic和C#的项目经理)在MSFT上:

  

微软于2010年6月25日上午8:53发布     感谢您对Visual Studio的建议!

     

正如你所指出的那样,我们可以支持在这里说Int16而不是int,但是这不会为C#程序提供任何额外的表现力(而且输入的字符更多!)。我们不太可能投入我们的资源来为Enums添加这种支持。