Почему добавление символа @ делает эту работу? - PullRequest
19 голосов
/ 27 марта 2009

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

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

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

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

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

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

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

1 Ответ

37 голосов
/ 27 марта 2009

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...