可能重复:
What's the use/meaning of the @ character in variable names in C#?C#中变量名之前的@符号是什么意思?
据我所知,@符号可以一个字符串来改变编译器如何解析字符串之前使用。但是,当变量名以@符号为前缀时,这意味着什么?
可能重复:
What's the use/meaning of the @ character in variable names in C#?C#中变量名之前的@符号是什么意思?
据我所知,@符号可以一个字符串来改变编译器如何解析字符串之前使用。但是,当变量名以@符号为前缀时,这意味着什么?
@符号允许您使用保留字。例如:
int @class = 15;
上述工作,在以下不会:
int class = 15;
与它有什么不同,比如下划线? – 2009-01-09 20:15:41
使用@符号时,该名称在程序集中记录为“class”,而下划线则为“_class”。因此,如果另一个.NET语言没有将“class”定义为保留字,则可以使用“class”这个名称。 – 2009-01-09 20:23:43
如果您使用@class属性名称,您可以像这样访问它:MyClass.class而不是MyClass._class – 2009-01-09 20:24:05
它允许你使用C#的关键字作为变量。例如:
class MyClass
{
public string name { get; set; }
public string @class { get; set; }
}
符号@供应2个目的在C#:
首先,它可以让你使用保留关键字作为像这样的变量:
int @int = 15;
第二选项允许您指定一个字符串而不必转义任何字符。例如将“\”字符是一个转义字符所以通常你需要做到这一点:
var myString = "c:\\myfolder\\myfile.txt"
或者你可以这样做:
var myString = @"c:\myFolder\myfile.txt"
重要的一点是,其他的答案忘了,是在CIL中将“@keyword”编译为“关键字”。因此,如果你有一个框架,例如F#,它需要你定义一个名为“class”的属性的类,你可以做到这一点。
这不是那在实践中很有用,但没有它会阻止C#从某种形式的语言interop。
我通常看到它用于互操作,但为了避免关键字限制(通常在局部变量名称上,这里是只有的作用)即ie。
private void Foo(){
int @this = 2;
}
但我强烈劝阻!只要找到其他名称,即使变量的“最佳”名称是保留名称之一。
请参阅http://stackoverflow.com/questions/91817 – Simon 2009-06-16 08:02:51