Почему добавление символа @делает эту работу?
Я работаю с 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"}); %>
Ответы
Ответ 1
В С# "класс" является зарезервированным ключевым словом - добавление символа "@" в начало зарезервированного ключевого слова позволяет использовать ключевое слово в качестве идентификатора.
Вот пример из спецификации С#:
class @class {
public static void @static(bool @bool) {
if (@bool) System.Console.WriteLine("true");
else System.Console.WriteLine("false");
}
}
Примечание: это, конечно, пример, а не рекомендуемая практика.