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

是否可以在C#中使用关键字值定义枚举?,c#,enums,C#,Enums,我有一些正在读取的客户机数据,并且我已经为其中一个值定义了一个枚举,所以我可以使用Enum.Parse(type,somestring) 问题是他们只是增加了一个新的价值:“公共”。是否可以定义同时也是保留字的枚举值 即: 如果不是,我想我将编写一个解析方法。如果将public大写为public,它将不会被识别为关键字。关键字区分大小写 然而,作为一般实践,使用关键字名称(即使它们大小写不同)是个坏主意,因为如果不小心用关键字代替标识符,可能会导致混淆,甚至是细微的缺陷 也可以在某些上下文(如变

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

问题是他们只是增加了一个新的价值:“公共”。是否可以定义同时也是保留字的枚举值

即:


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

如果将
public
大写为
public
,它将不会被识别为关键字。关键字区分大小写

然而,作为一般实践,使用关键字名称(即使它们大小写不同)是个坏主意,因为如果不小心用关键字代替标识符,可能会导致混淆,甚至是细微的缺陷

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

因此,在本例中,您还可以使用
@public
将保留字用作枚举标识符


如果选择使用
@
,请注意,该符号仅在源代码中用于区分标识符和保留字。对于外部世界(以及在像
Enum.Parse()
这样的方法中),枚举值的名称只是
public
您可以在变量名前面加上一个
@
。这允许您使用关键字作为变量名-so
@public

从:

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


是,在名称前面加@。i、 e.
@public

但是这样做并不是一个好主意。相反,请向枚举中添加更多信息:


在VB.Net中,PublicAccess等使用方括号[…]将关键字描述为标识符。 例如:


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

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

你的意思是prepend,而不是append。我知道这一点,但我无法控制客户端选择“public”作为其所需值的事实。Parse有一个标志,允许您指定不区分大小写,但在我的情况下,这也会很不方便(尽管不是show-stopper)由于我使用的帮助器类,必须指定它。当您使用
@public
时,
@
符号仅在代码中用于区分标识符和保留字。对于外部世界(包括像
Enum.Parse()
这样的方法),您应该只使用
public
。我意识到这一点,但我无法控制客户机选择“public”作为他们想要的值这一事实。
Public Sub Test(ByVal [public] As String)
  MessageBox.Show("Test string: " & [public])
End Sub
Public Enum MyEnum As Integer
    Disabled = 0
    [New] = 1
    [Public] = 2
    Super = 4
    [Error] = 5
End Enum