这意味着@
是什么意思(我知道它使用的是过时的.NET Framework 1.1 ConfigurationSettings.AppSettings)?
@ConfigurationSettings.AppSettings["some_setting"];
这不是字符串文字:Using the literal '@' with a string variable
实际代码:
_scale_id_regex = @ConfigurationSettings.AppSettings["ScaleIdRegEx"];
在作为Windows服务一部分的常规.cs文件中,_scale_id_regex
只是该类中的私有字符串,因此不涉及ASP.NET和Razor。
答案 0 :(得分:21)
它被称为逐字标识符。它允许您在保留字后命名变量。 e.g。
string @string = string.Empty;
object @object = new object();
int @int = 1;
...
您拥有的代码是有效的,但我不相信@
服务有任何实际目的。由于这比我刷新页面的速度更快,这就是ECMA C#语言规范第9.4.2节所说的内容。
前缀“@”允许使用关键字作为标识符,即 在与其他编程语言交互时很有用。该 character @实际上不是标识符的一部分,所以标识符 可能在其他语言中看作普通标识符,没有 字首。带有@前缀的标识符称为逐字 标识符
您发布的代码是有效的,因为语言规范允许这样做,尽管不鼓励。
[注意:对于不是关键字的标识符,使用@前缀是 允许,但作为一种风格强烈劝阻。结束说明]
答案 1 :(得分:4)
您可以使用@
作为标识符的前缀,以便将它们与保留字等区分开来:
var @class = 1;
(例如,@ class,os主要在razor视图中用于指定css类。否则,请避免使用这样的名称:)
在LINQ中也很有用,例如from @group in...
答案 2 :(得分:2)
不要低估这个,因为问题说它是在常规的.cs
课程中。在我写这篇文章时,问题中没有任何内容表明这不包含在剃须刀视图中。如果没有上下文,那将会使更多更有意义。
我在这里保留这个答案,以防其他用户到这里寻找@
可能做的事情。
它是一种从剃刀视图(.cshtml
)访问服务器端变量和方法的方法。
它非常常用于:
读取会话变量:
@Session["something"]
访问Html帮助程序方法
@Html.RenderPartial("someview","somecontroller");
完全按照你的问题行事(虽然我个人认为这是不好的做法)
@ConfigurationManager.AppSettings["whatever"];
启动代码块并使用foreach
@{
foreach(var item in Model)
{
<span class="modelProperty">@Model.SomeTextProperty</span>
}
}
答案 3 :(得分:0)
这里的'@'符号实际上根本不是C#操作符。它标志着ASP.NET Razor-syntax代码块的开始。 (但是,当然,代码块中有C#。)