Оператор С# @(не для строковых литералов)
Что означает @
в этом значении (я знаю это, используя устаревшую .NET Framework 1.1 ConfigurationSettings.AppSettings)?
@ConfigurationSettings.AppSettings["some_setting"];
Это НЕ строковый литерал: Использование литерала '@' со строковой переменной
Фактический код:
_scale_id_regex = @ConfigurationSettings.AppSettings["ScaleIdRegEx"];
В обычном файле .cs, который является частью службы Windows, а _scale_id_regex
- это просто приватная строка в классе, поэтому ASP.NET и Razor не задействованы.
Ответы
Ответ 1
Он называется стенографическим идентификатором. Он позволяет вам указывать переменные после зарезервированных слов. например.
string @string = string.Empty;
object @object = new object();
int @int = 1;
...
Код, который у вас есть, действителен, но я не считаю, что службы @
имеют какую-либо реальную цель. Поскольку это повысилось быстрее, чем я мог обновить мою страницу, вот что говорится в разделе 9.4.2 ECMA С# Language.
Префикс "@" позволяет использовать ключевые слова как идентификаторы, которые полезно при взаимодействии с другими языками программирования. символ @на самом деле не является частью идентификатора, поэтому идентификатор можно увидеть на других языках как обычный идентификатор, без префикс. Идентификатор с префиксом @называется дословным Идентификатор.
Код, который вы опубликовали, действителен, потому что это разрешено спецификацией языка, хотя и не рекомендуется.
[Примечание. Использование префикса @для идентификаторов, не являющихся ключевыми словами, разрешено, но сильно обескуражило, как вопрос стиля. end note]
Ответ 2
Вы можете указать идентификаторы с @
, чтобы отличить их от зарезервированного слова и т.д.:
var @class = 1;
(класс @, например, os, который в основном используется в представлениях бритвы для указания класса css. В противном случае избегайте использования таких имен:)
Также полезно в LINQ, например from @group in...
Ответ 3
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>
}
}
Ответ 4
Символ '@' здесь фактически не является оператором С#. Он отмечает начало блока кода ASP.NET Razor-syntax. (Но, конечно, внутри вашего кодового блока есть С#.)