C# @ 运算符(不适用于字符串文本)

本文关键字:字符串 文本 适用于 不适用 运算符 | 更新日期: 2024-11-07 08:43:50

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

@ConfigurationSettings.AppSettings["some_setting"];

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

实际代码:

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

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

C# @ 运算符(不适用于字符串文本)

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

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

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

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

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

[注意:对非关键字的标识符使用 @ 前缀是 允许,但作为风格问题强烈不鼓励。尾注]

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

var @class = 1;

(@class,例如,OS 主要用于 Razor 视图中指定 CSS 类。 否则,请避免使用此类名称:)

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

Precusor:

不要因为这个问题说这是在普通.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>
        }
    }
    

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