2009-01-09 94 views

回答

519

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

int @class = 15; 

上述工作,在以下不会:

int class = 15; 
+17

与它有什么不同,比如下划线? – 2009-01-09 20:15:41

+66

使用@符号时,该名称在程序集中记录为“class”,而下划线则为“_class”。因此,如果另一个.NET语言没有将“class”定义为保留字,则可以使用“class”这个名称。 – 2009-01-09 20:23:43

+28

如果您使用@class属性名称,您可以像这样访问它:MyClass.class而不是MyClass._class – 2009-01-09 20:24:05

8

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

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

符号@供应2个目的在C#:

首先,它可以让你使用保留关键字作为像这样的变量:

int @int = 15; 

第二选项允许您指定一个字符串而不必转义任何字符。例如将“\”字符是一个转义字符所以通常你需要做到这一点:

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

或者你可以这样做:

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

重要的一点是,其他的答案忘了,是在CIL中将“@keyword”编译为“关键字”。因此,如果你有一个框架,例如F#,它需要你定义一个名为“class”的属性的类,你可以做到这一点。

这不是在实践中很有用,但没有它会阻止C#从某种形式的语言interop。

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

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

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

相关问题