首页 文章

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

提问于
浏览
467

可能重复:C#中变量名中@字符的用途/含义是什么?

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

4 回答

  • 11

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

    int @class = 15;
    

    以上工作,当下面不会:

    int class = 15;
    
  • 57

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

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

    int @int = 15;
    

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

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

    或者你可以这样做:

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

    其他答案遗忘的重点是“@keyword”在CIL中被编译成“关键字” .

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

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

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

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

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

  • 597

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

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

相关问题