我正在阅读一些客户端数据,并且我为其中一个值定义了一个Enum,因此我可以使用Enum.Parse(type,somestring)。
问题是他们刚刚添加了一个新值:“public”。是否可以定义一个也是保留字的枚举值?
即:
public enum MyEnum {
SomeVal,
SomeOtherVal,
public,
YouGetTheIdea
}
如果不是,我想我会写一个解析方法。
答案 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