是否可以使用关键字值在C#中定义枚举?

Egg*_*eff 14 c# enums

我有一些我正在阅读的客户端数据,并且我为其中一个值定义了一个Enum,所以我可以使用Enum.Parse(type,somestring).

问题是他们刚刚添加了一个新值:"公共".是否可以定义一个也是保留字的枚举值?

IE:

public enum MyEnum {
    SomeVal,
    SomeOtherVal,
    public,
    YouGetTheIdea
}
Run Code Online (Sandbox Code Playgroud)

如果不是,我想我会写一个解析方法.

Ode*_*ded 25

您可以@在变量名前加一个.这允许您使用关键字作为变量名称 - 所以@public.

看到这里.

来自C#规范:

前缀"@"允许使用关键字作为标识符,这在与其他编程语言交互时很有用.字符@实际上不是标识符的一部分,因此标识符可能在其他语言中看作普通标识符,没有前缀.带有@前缀的标识符称为逐字标识符.允许使用@前缀作为非关键字的标识符,但强烈建议不要使用样式.


Fer*_*cio 8

是的,在名称前加上@.即@public


LBu*_*kin 7

如果您public使用Public它,则不会将其识别为关键字.关键字区分大小写.

然而,作为一般惯例,使用作为关键字的名称(即使它们因情况而异)也是一个坏主意,因为它可能导致混淆,或者如果关键字被意外地用于代替标识符,则甚至是微妙的缺陷.

也可以@在某些上下文(如变量或成员声明)中使用保留字作为非关键字.但是,当您不能使用其他名称时,这不是一种常见的做法,应该只是最后的手段.

因此,在您的情况下,您还@public可以使用保留字作为枚举标识符.

如果您选择使用@,请注意该符号仅用于源代码,以区分标识符和保留字.对于外部世界(以及类似的方法Enum.Parse()),枚举值的名称很简单public.