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。
它被称为逐字标识符。它允许您在保留字之后命名变量。例如
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
)。它通常用于:
-
读取会话变量:
@Session["something"]
-
访问 Html 帮助程序方法
@Html.RenderPartial("someview","somecontroller");
-
完全按照您在问题中的内容进行操作(尽管我个人认为这是不好的做法)
@ConfigurationManager.AppSettings["whatever"];
-
启动代码块并使用类似
foreach
@{ foreach(var item in Model) { <span class="modelProperty">@Model.SomeTextProperty</span> } }
这里的"@"符号实际上根本不是 C# 运算符。 它标志着 Razor 语法代码块 ASP.NET 的开始。 (但是,当然,代码块中有 C#。