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

查看原始版本

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

我知道,@符号可以在字符串文本之前使用,以更改编译器解析字符串的方式。但是变量名前面加上@符号意味着什么呢?

所有回答
  • David Lee #1

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

    int @class = 15;
    

    当下面的不起作用时,上面的就起作用了:

    int class = 15;
    
  • Rachel Lee #2

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

    首先,它允许您将保留关键字用作如下变量:

    int @int = 15;
    

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

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

    或者您也可以这样做:

    var myString = @"c:myFoldermyfile.txt"
    
  • Humphrey Lee #3

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

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

    在实践中并不有用,但是没有它会阻止C语言的某些形式的互操作

    我通常看到它不是用于互操作,而是为了避免关键字限制(通常是对局部变量名的限制,这里的效果是only效果)

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

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

  • Tyler Lee #4

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

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