【问题标题】:Changing the underlying type of an enumeration to long [duplicate]将枚举的基础类型更改为长 [重复]
【发布时间】:2011-09-22 07:26:22
【问题描述】:

可能重复:
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
}

第一个编译成功(带有:long),而第二个(带有:System.Int64)不会编译 - 你会得到一个错误:Type byte, sbyte, short, ushort, int, uint, long,或 ulong 预期 注意:显然,我理解错误消息。令我困惑的是,我认为“long”或多或少是“Int64”的别名

【问题讨论】:

  • 嗯...@BoltClock。你的链接很有用。它对这个问题进行了健康的讨论。然而,仅仅看它的标题就很难推断出它涉及的是相同的主题。无论如何,谢谢。

标签: c#


【解决方案1】:

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

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

正如您所指出的,我们可以在此处启用对使用 Int16 而不是 int 的支持,但这不会为 C# 程序提供任何额外的表现力(而且要输入更多字符!)。我们不太可能投入资源将这种支持添加到 Enums。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
  • 2019-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
相关资源
最近更新 更多