16

这意味着什么@(我知道它使用的是过时的 .NET Framework 1.1 ConfigurationSettings.AppSettings)?

@ConfigurationSettings.AppSettings["some_setting"];

这不是字符串文字:将文字“@”与字符串变量一起使用

实际代码:

_scale_id_regex = @ConfigurationSettings.AppSettings["ScaleIdRegEx"];

在作为 Windows 服务一部分的常规 .cs 文件中,它_scale_id_regex只是类中的私有字符串,因此不涉及 ASP.NET 和 Razor。

4

4 回答 4

27

它被称为逐字标识符。它允许您在保留字之后命名变量。例如

string @string = string.Empty;
object @object = new object();
int @int = 1;
...

您拥有的代码是有效的,但我不相信@那里有任何真正的目的。由于这比我刷新页面的速度更快,这就是 ECMA C# 语言规范第 9.4.2 节所说的内容。

前缀“@”允许使用关键字作为标识符,这在与其他编程语言交互时很有用。字符 @ 实际上不是标识符的一部分,因此标识符在其他语言中可能被视为普通标识符,没有前缀。带有@ 前缀的标识符称为逐字标识符。

您发布的代码是有效的,因为语言规范允许这样做,尽管不鼓励这样做。

[注意:允许对不是关键字的标识符使用 @ 前缀,但出于风格考虑,强烈建议不要这样做。尾注]

于 2012-08-07T18:03:58.430 回答
4

您可以为标识符添加前缀,@以便将它们与保留字等区分开来:

var @class = 1;

(@class,例如,os主要用于razor视图中指定css类。否则,避免使用这样的名称:)

在 LINQ 中也很有用,例如from @group in...

于 2012-08-07T18:04:36.547 回答
2

前体:

不要对此投反对票,因为问题说这是在普通.cs班级。在我写这篇文章的时候,问题中没有任何内容表明这不包括在剃刀视图中。在没有上下文的情况下,这种情况会更有意义。

我在这里保留这个答案,以防其他用户到这里寻找@可能会做的事情。

回答:

.cshtml它是一种从剃刀视图 ( )访问服务器端变量和方法的方法。它非常常用于:

  1. 读取会话变量:

    @Session["something"]

  2. 访问 Html 辅助方法

    @Html.RenderPartial("someview","somecontroller");

  3. 完全按照您的问题去做(尽管我个人认为这是不好的做法)

    @ConfigurationManager.AppSettings["whatever"];

  4. 启动代码块并使用类似的东西foreach

    @{
        foreach(var item in Model)
        {
            <span class="modelProperty">@Model.SomeTextProperty</span>
        }
    }
    
于 2012-08-07T18:06:04.247 回答
0

这里的“@”符号实际上根本不是 C# 运算符。它标志着 ASP.NET Razor 语法代码块的开始。(但是,当然,您的代码块中有 C#。)

于 2012-08-07T18:06:56.977 回答