变量名中的C#@符号

时间:2011-04-28 20:14:36

标签: c# silverlight

  

可能重复:
  What does placing a @ in front of a C# variable name do?

您好,

我讨好了Silverlight和RIA服务。在创建支持编辑的新域服务时,在域服务类(C#)中生成以下代码:

  public void InsertClass(Class @class){
        ...
  }

变量名中@符号的含义是什么?

6 个答案:

答案 0 :(得分:6)

class是C#中的保留字,表示新类型。您不能拥有一个保留字的变量名,因此您可以使用@来“转义”该符号。

AKA:

int int = 4; // Invalid
int @int = 4; // Valid

答案 1 :(得分:1)

@用于必须具有变量名称且也是c#保留关键字的情况。在大多数情况下,可以避免(并且应该是因为它可能引起的混乱)。有时候这是不可避免的;例如在asp.net MVC中你已经将css类添加到你必须使用像这样的匿名类的元素

new {@class = "myCssClass" }

要渲染

... class="myCssClass" ...

没有办法绕过它。

答案 2 :(得分:1)

如果您尝试命名变量class会发生什么,您认为? @前缀允许您使用保留/关键字作为变量名称。

答案 3 :(得分:1)

以前回答here

  

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

答案 4 :(得分:1)

@符号仅在变量名称的开头有效,用于允许保留关键字用作变量名称。

var @class = 12;  // This will compile
var cl@ss = 12; // This will NOT compile

答案 5 :(得分:1)

如果要命名也是C#关键字的变量,则使用@符号。即,

var @abstract =“1234”;

会创建一个名为“@abstract”的字符串。如果你没有,你会得到一个编译错误。

此外 - 您可以在字符串前面使用@符号:

var myStr = @“C:\ MyDataFile.txt”;

这样,您不必在字符串中转义文字。通常你必须在C:

之后使用双\