С# указатель штруделя
При кодировании на С# я по ошибке добавлял знак strudel перед переменной в выражении if (вместо восклицательного знака).
bool b = false;
if (@b)
{
}
Я удивлен, что он скомпилирован успешно без ошибок.
Интересно: В чем смысл приведенного выше кода?
Ответы
Ответ 1
@
может использоваться для "escape" идентификаторов, если вы хотите использовать ключевые слова. Например:
int @class = 10;
Конечно, как правило, плохая идея использовать ключевые слова как идентификаторы, но если вы используете библиотеку классов, которая их использует, ее может быть трудно избежать. Иногда также полезно использовать "@this" для ситуаций, когда вы хотите эффективно иметь ссылку this
, но по какой-то причине вы не можете ее использовать. (Это довольно мало и далеко друг от друга, но я видел это пару раз, и об этом стоит хотя бы знать.)
Ответ 2
Джон ответ подводит итоги. Примером того, когда вы должны использовать эту технику экранирования, является указание атрибутов HTML в анонимных типах на вспомогательные методы в ASP.NET MVC.
Html.ActionLink("text", "action", "controller",
new { @class = "some-css-class" }, null);
Я также ударил это при составлении анонимных типов для публикации через HTTP с использованием кодировки JSON, где вы не можете изменить удаленный API.
+1 для 'strudel' тоже:)