C#中变量名中@字符的用途/含义是什么?
时间:2020-03-06 14:20:54 来源:igfitidea点击:
我发现我们可以在C#中以'@'字符开头变量名。
在我的Cproject中,我正在使用用Java编写的Web服务(向项目添加了Web引用)。 WSDL中定义的接口对象之一具有名为" params"的成员变量。显然,这是C中的保留字,因此我们不能有一个带有成员变量且名称为" params"的类。生成的代理对象包含一个如下所示的属性:
public ArrayList @params { get { return this.paramsField; } set { this.paramsField = value; } }
我搜索了VS 2008文档,但找不到任何相关信息。另外,搜索Google并没有给我任何有用的答案。那么,变量/属性名称中'@'字符的确切含义或者用途是什么?
解决方案
它只是让我们使用保留字作为变量名。不推荐恕我直言(除非我们有这种情况)。
它只是允许我们将保留字用作变量名。前几天我想要一个名为" event"的变量。我本来打算使用_event
,但是我的同事提醒我可以将其称为@ event
。
在C中,@(@)字符用于表示明显不符合语言规范中相关规则的文字。
具体来说,它可以用于与保留关键字冲突的变量名(例如,我们不能使用params,但是可以使用@params,与语言规范中的out / ref /任何其他关键字相同)。另外,它可以用于未转义的字符串文字;这与路径常数特别相关,例如我们可以编写path = @" c:\ temp \ somefile.txt"来代替
path =" c:\ temp \ somefile.txt"`。对于正则表达式也非常有用。
直接来自CLanguage规范,标识符(C#)
:
The prefix "@" enables the use of keywords as identifiers, which is useful when interfacing with other programming languages. The character @ is not actually part of the identifier, so the identifier might be seen in other languages as a normal identifier, without the prefix. An identifier with an @ prefix is called a verbatim identifier.
如果使用关键字作为标识符的名称,则会得到预期的编译器错误标识符,标识符名称是关键字
要克服此错误,请在标识符前面加上@。这样的标识符是逐字标识符。
字符@实际上不是标识符的一部分,因此该标识符在其他语言中可能被视为普通标识符,没有前缀