变量名前面的@符号在C#中是什么意思?


What does the @ symbol before a variable name mean in C#?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What's the use/meaning of the @ character in variable names in C#?

我理解@符号可以在字符串文字之前使用,以更改编译器解析字符串的方式。但当变量名以@符号作为前缀时,这意味着什么?


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

1
int @class = 15;

当以下情况不适用时,上述方法有效:

1
int class = 15;


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

首先,它允许您使用保留关键字作为变量,如下所示:

1
int @int = 15;

第二个选项允许您指定字符串而不必转义任何字符。例如,""字符是转义字符,因此通常需要这样做:

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

或者,您可以这样做:

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


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

因此,如果您有一个框架是在(例如)f_中创建的,它要求您用名为"class"的属性定义一个类,那么您实际上可以这样做。

它在实践中并没有那么有用,但如果没有它,将阻止C进行某种形式的语言互操作。

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

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

但我强烈反对!只要找到另一个名称,即使变量的"最佳"名称是保留名称之一。


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

1
2
3
4
5
class MyClass
{
   public string name { get; set; }
   public string @class { get; set; }
}