c# - 编码规范 - naming convention中文




C#中变量名称中@字符的用法/含义是什么? (6)

@符号允许您为变量名称使用保留关键字。 像int @int,@string,@double等

例如:

string @public = "Reserved Keyword used for me and its fine";

上面的代码工作正常,但下面的代码不起作用:

string public = "This will not compile";

我发现你可以用C#中的'@'字符来启动你的变量名。 在我的C#项目中,我使用了用Java编写的Web服务(我添加了对我的项目的Web引用)。 WSDL中定义的一个接口对象具有名称为“params”的成员变量。 显然,这是C#中的一个保留字,因此您不能拥有带有名称为“params”的成员变量的类。 生成的代理对象包含一个如下所示的属性:

public ArrayList @params {
    get { return this.paramsField; }
    set { this.paramsField = value; }
}

我搜索了VS 2008 c#文档,但找不到任何关于它的信息。 同时搜索谷歌没有给我任何有用的答案。 那么变量/属性名称中'@'字符的确切含义或用法是什么?


与Perl的签名不同,C#中的变量名前的@前缀没有任何意义。 如果x是变量,@ x是同一变量的另一个名称。

> string x = "abc";
> Object.ReferenceEquals(x, @x).Dump();
True

@前缀确实有用处 ,正如你已经发现的那样 - 你可以用它来阐明变量名称,否则C#会拒绝它作为非法的。

> string string;
Identifier expected; 'string' is a keyword

> string @string;

在C#中,at(@)字符用于表示明确不符合语言规范中相关规则的文字。

具体来说,它可用于与保留关键字冲突的变量名称(例如,您不能使用参数,但可以使用@params,与out / ref /语言规范中的任何其他关键字一样)。 此外,它可以用于非转义字符串文字; 这与路径常量特别相关,例如,您可以写path = @"c:\temp\somefile.txt"而不是path = "c:\\temp\\somefile.txt" path = @"c:\temp\somefile.txt" 。 它对于正则表达式也非常有用。


如果我们使用关键字作为标识符的名称,我们会得到一个编译器错误“标识符预期,'标识符名称''是一个关键字”要解决此错误,请在标识符前加上“@”。 这些标识符是逐字标识符。 字符@实际上并不是标识符的一部分,因此该标识符可能在其他语言中被看作是普通标识符,而没有前缀


它只是让您使用保留字作为变量名称。 不推荐恕我直言(除非你有例外)。


您可以使用它将保留的关键字用作变量名称

 int @int = 3; 

编译器会忽略@并将该变量编译为int

使用思想不是一种常见的做法





specifications