在C#中,variables名之前的@符号是什么意思?

可能重复:
C#中variables名中@字符的用法/含义是什么?

我知道@符号可以在string之前使用,以改变编译器parsingstring的方式。 但是当variables名以@符号为前缀时,这意味着什么?

@符号允许您使用保留字。 例如:

int @class = 15; 

以上的作品,当下面不会:

 int class = 15; 

@符号在C#中有两个用途:

首先,它允许您使用保留的关键字作为这样的variables:

 int @int = 15; 

第二个选项可以让你指定一个string而不必转义任何字符。 例如,'\'字符是一个转义字符,所以通常你需要这样做:

 var myString = "c:\\myfolder\\myfile.txt" 

或者你可以这样做:

 var myString = @"c:\myFolder\myfile.txt" 

其他答案忘记的重要一点是,“@keyword”被编译成CIL中的“keyword”。

所以如果你有一个F#的框架,你需要用一个名为“class”的属性来定义一个类,你可以这样做。

这在实践中并不是很有用,但是不会阻止C#从某种forms的语言交互。

我通常看到它不是用于互操作,而是为了避免关键字限制(通常在局部variables名称,这是唯一的影响),即。

 private void Foo(){ int @this = 2; } 

但我强烈劝阻! 只要find其他名称,即使variables的“最佳”名称是保留名称之一。

它允许您使用C#关键字作为variables。 例如:

 class MyClass { public string name { get; set; } public string @class { get; set; } }