Подтвердить что ты не робот

Оператор С# @(не для строковых литералов)

Что означает @ в этом значении (я знаю это, используя устаревшую .NET Framework 1.1 ConfigurationSettings.AppSettings)?

@ConfigurationSettings.AppSettings["some_setting"];

Это НЕ строковый литерал: Использование литерала '@' со строковой переменной

Фактический код:

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

В обычном файле .cs, который является частью службы Windows, а _scale_id_regex - это просто приватная строка в классе, поэтому ASP.NET и Razor не задействованы.

4b9b3361

Ответ 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. (Но, конечно, внутри вашего кодового блока есть С#.)