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

时间:2010-08-16 16:18:46

标签: c# enums

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

问题是他们刚刚添加了一个新值:“public”。是否可以定义一个也是保留字的枚举值?

即:

public enum MyEnum {
    SomeVal,
    SomeOtherVal,
    public,
    YouGetTheIdea
}

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

6 个答案:

答案 0 :(得分:25)

您可以在变量名称前添加@。这允许您将关键字用作变量名称 - 所以@public

请参阅here

来自C# spec

  

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

答案 1 :(得分:8)

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

答案 2 :(得分:7)

如果您将public变为Public,则不会将其识别为关键字。关键字区分大小写。

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

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

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

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

答案 3 :(得分:0)

尽管如此,这并不是一个好主意。相反,在枚举中添加更多信息:

PublicAccess等

答案 4 :(得分:0)

在VB.Net中使用方括号[...]来描述关键字作为标识符。 例如:

Public Sub Test(ByVal [public] As String)
  MessageBox.Show("Test string: " & [public])
End Sub

答案 5 :(得分:0)

对于VB.NET,请执行以下操作:

Public Enum MyEnum As Integer
    Disabled = 0
    [New] = 1
    [Public] = 2
    Super = 4
    [Error] = 5
End Enum