【问题标题】:What is @ in front of a variable / identifier in C#? [duplicate]C#中变量/标识符前面的@是什么? [复制]
【发布时间】:2013-03-06 05:14:35
【问题描述】:

我认为我的问题与此不同: What's the @ in front of a string in C#?

我在 VB.net 工作,所以这在 C# 中可能是一些简单的事情,但我不知道这一点。

我得到以下代码,其中一个字符串变量中有 10 个 XML。请在下面的代码sn-p中调用LoadXml方法时,在claimList字符串变量前面需要什么@符号:

private void UploadNewClaims(PMAUser grumble, string companyAbbreviation, string claimsList)
{
    var claimDoc = new System.Xml.XmlDocument();
    claimDoc.LoadXml(@claimsList);

【问题讨论】:

    标签: c# .net syntax


    【解决方案1】:

    在这种情况下,这是完全没有必要的,但它允许您使用任何关键字作为 C# 中的标识符。它根本不会改变标识符的含义,也不改变它的使用方式——它只会告诉编译器您希望将以下字符识别为关键字。

    例如:

    string @int = "hello";
    var @void = @int;
    

    将其用作claimsList 的标识符表明编写它的人不理解它。标识符用于字符串变量的事实完全在这里无关紧要。

    就我个人而言,我几乎只将该功能用于扩展方法,众所周知我会调用第一个参数@this

    public static void Foo(this Bar @this)
    {
        return @this.Baz() * 2;
    }
    

    【讨论】:

    • 我想 @ 在那里,因为在某一时刻它是一个路径字符串文字,例如 @"C:\path"。我假设当它被更改为变量时,进行更改的人不理解 @"" 语法并将@留在原处。
    • 我已经用谷歌搜索了,因为我已经看到 @this 作为扩展方法的参数哈。地狱那很有用。显示但未写入的点:You have to use @variable also when calling, not only for the declaration.
    猜你喜欢
    • 2010-09-30
    • 2016-11-05
    • 1970-01-01
    • 2016-05-22
    • 2011-05-22
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多