C# 是否允许枚举成员名以数字开头?

C# 是否允许枚举成员名以数字开头?,c#,enums,C#,Enums,我正在尝试设置一个枚举来容纳钣金量规(厚度)。我认为如果我能写下以下内容,那将是最直观的: using System.ComponentModel; public enum Gauge { [Description("24 Gauge")] 24Ga = 239, [Description("20 Gauge")] 20Ga = 359, [Description("18 Gauge")] 18Ga = 478, [Description(

我正在尝试设置一个枚举来容纳钣金量规(厚度)。我认为如果我能写下以下内容,那将是最直观的:

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
}
但这被VisualStudio拒绝了

相反,这是可以的:

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
}
这使得很明显,不允许以数字字符开头枚举成员名,即使变量名通常允许这样做

我的问题是,这项限制在哪里订明?政府似乎没有提到这一点

是否允许枚举成员名以数字开头

不,语言语法不允许这样做


否。枚举成员必须是有效标识符。根据本手册第14.3节:

枚举类型声明的主体定义了零个或多个枚举成员,这些成员是枚举类型的命名常量。两个枚举成员不能具有相同的名称

枚举成员声明:
枚举成员声明
枚举成员声明,枚举成员声明
枚举成员声明:
属性密码标识符
属性密码标识符
=
常量表达式

。。。和标识符在第2.4.2节中描述:

标识符:
可用标识符
@
标识符或关键字
可用标识符:
非关键字的标识符或关键字
标识符或关键字:
标识符开始字符标识符部分字符pt
标识符开始字符:
字母字符
(下划线字符U+005F)


请注意数字不是标识符的起始字符。

@gunr217@asawyer谢谢!如果我先看你的评论,这会节省我一点搜索时间。”[…]十进制类型。这不是一个64位整数,小数点在幕后移位吗?”请在…@gunr217 Shoot中读一下,我想回滚这些更改,因为我将第二部分移到了一个新问题上,但我似乎不能这样做。请版主回滚对此的更改。我曾经在其他语言中使用数字,但现在我认为这是一个愚蠢的问题。“尽管变量名通常允许这样做。”不,不是。
identifier-start-character:
    letter-character
    _ (the underscore character U+005F)