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

时间:2009-01-09 20:10:42

标签: c#

  

可能重复:
  What's the use/meaning of the @ character in variable names in C#?

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

4 个答案:

答案 0 :(得分:606)

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

int @class = 15;

以上作品,如下所示:

int class = 15;

答案 1 :(得分:361)

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

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

int @int = 15;

第二个选项允许您指定字符串而不必转义任何字符。例如,'\'字符是转义字符,因此通常需要执行此操作:

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

或者你可以这样做:

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

答案 2 :(得分:58)

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

因此,如果您有一个框架,例如F#,它要求您定义一个名为“class”的属性的类,您实际上可以这样做。

>

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

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

但我强烈反对这一点!只要找到另一个名称,即使该变量的“最佳”名称是其中一个保留名称。

答案 3 :(得分:11)

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

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