【问题标题】:C# @ symbol in variable names [duplicate]变量名中的C#@符号[重复]
【发布时间】:2011-04-28 20:14:36
【问题描述】:

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

嗨,

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

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

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

【问题讨论】:

    标签: c# silverlight


    【解决方案1】:

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

    又名:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        这是之前回答的here

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            【解决方案5】:

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

            new {@class = "myCssClass" }
            

            让它渲染

            ... class="myCssClass" ...
            

            没有办法解决。

            【讨论】:

              【解决方案6】:

              当您想要命名也是 C# 关键字的变量时,使用 @ 符号。即,

              var @abstract = "1234";

              将创建一个名为“@abstract”的字符串。如果你不这样做,你会得到一个编译错误。

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

              var myStr = @"C:\MyDataFile.txt";

              这样,您不必在字符串中转义文字。通常你必须在 C: 之后使用双 \:

              【讨论】:

                猜你喜欢
                • 2011-04-28
                • 1970-01-01
                • 1970-01-01
                • 2013-02-12
                • 2020-09-28
                • 2016-09-27
                • 1970-01-01
                • 2010-09-30
                • 1970-01-01
                相关资源
                最近更新 更多