是否允许具有以数字开头的枚举成员名称?

时间:2014-08-08 20:24:45

标签: c# enums

我正在尝试设置一个枚举来固定钣金规(厚度)。如果我能写的话,我认为这将是最直观的:

using System.ComponentModel;
public enum Gauge
{
    [Description("24 Gauge")]
    24Ga = 239,
    [Description("20 Gauge")]
    20Ga = 359,
    [Description("18 Gauge")]
    18Ga = 478,
    [Description("16 Gauge")]
    16Ga = 598,
    [Description("14 Gauge")]
    14Ga = 747
}

但Visual Studio拒绝了这一点。

相反,这没关系:

using System.ComponentModel;
public enum Gauge
{
    [Description("24 Gauge")]
    G24 = 239,
    [Description("20 Gauge")]
    G20 = 359,
    [Description("18 Gauge")]
    G18 = 478,
    [Description("16 Gauge")]
    G16 = 598,
    [Description("14 Gauge")]
    G14 = 747
}

这使得很明显不允许您使用数字字符启动Enum成员名称,即使通常允许使用变量名称。

我的问题是:这个限制在哪里指定? Enum Class documentation似乎没有提到它。

2 个答案:

答案 0 :(得分:3)

  

是否允许使用以数字开头的枚举成员名称?

不,语言语法不允许。

请参阅2.4.2 Identifiers

identifier-start-character:
    letter-character
    _ (the underscore character U+005F) 

答案 1 :(得分:3)

没有。枚举成员必须是有效的标识符。来自C# 5 specification的第14.3节:

  

枚举类型声明的主体定义零个或多个枚举成员,它们是枚举类型的命名常量。没有两个枚举成员可以使用相同的名称。

     

枚举成员声明:
   枚举成员声明
   enum-member-declarations enum-member-declaration
  枚举成员声明:
   属性 opt 标识符
   属性 opt 标识符 = 常量表达式

...和标识符在2.4.2节中描述:

  

标识符:
   可用的标识符
  @ 标识符或关键字
  可用的标识符
   标识符或关键字不是关键字
  标识符或关键字:
   identifier-start-character 标识符 - 部分字符 opt
  标识符 - 开始 - 字符:
   字母字符
  _(下划线字符U + 005F)

注意数字 标识符 - 起始字符