可能重複:
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