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

Почему добавление символа @делает эту работу?

Я работаю с asp.net mvc и создаю форму. Я хочу добавить атрибут класса в тег формы.

Я нашел пример здесь добавления атрибута enctype и попытался поменять его на класс. Я получаю ошибку компиляции при доступе к представлению.

Затем я нашел пример того, кто добавляет символ @в начало имени свойства, и это сработало. Отлично, что он работает, но я тот, кто должен знать, почему и быстрый поиск Google не помог. Я понимаю, что С# позволяет дописывать @на строку, чтобы игнорировать экранирование символов. Почему это работает в этом случае? Что @сообщает компилятору?

Код, который создает ошибку компиляции?

 <% Html.BeginForm("Results", "Search", 
    FormMethod.Get, new{class="search_form"}); %>

Код, который работает:

 <% Html.BeginForm("Results", "Search", 
    FormMethod.Get, new{@class="search_form"}); %>
4b9b3361

Ответ 1

В С# "класс" является зарезервированным ключевым словом - добавление символа "@" в начало зарезервированного ключевого слова позволяет использовать ключевое слово в качестве идентификатора.

Вот пример из спецификации С#:

class @class {
    public static void @static(bool @bool) {
        if (@bool) System.Console.WriteLine("true");
        else System.Console.WriteLine("false");
    }
}

Примечание: это, конечно, пример, а не рекомендуемая практика.