В C# штрудель знак

при кодировании на C# я по ошибке добавил знак штруделя перед переменной в операторе if (вместо восклицательного знака).

bool b = false;
if (@b)
{

}

Я удивлен, что он успешно скомпилирован без каких-либо ошибок.

интересно: что означает приведенный выше код?

2 ответов


@ может использоваться для "escape" идентификаторов, если вы хотите использовать ключевые слова. Например:

int @class = 10;

конечно, обычно не рекомендуется использовать ключевые слова в качестве идентификаторов, но если вы используете библиотеку классов, которая их использует, это может быть трудно избежать. Иногда также может быть полезно использовать "@this " для ситуаций, когда вы хотите эффективно есть this ссылка, но по какой-то причине вы не можете ее использовать. (Это довольно мало, и далеко между, Но я видел это пару раз, и это стоит, по крайней мере, знать.)


ответ Джона подводит итог. Примером того, когда вы должны использовать этот метод экранирования, является указание атрибутов HTML в анонимных типах для вспомогательных методов в ASP.NET MVC.

Html.ActionLink("text", "action", "controller",
    new { @class = "some-css-class" }, null);

Я также ударил это при составлении анонимных типов для публикации через HTTP с помощью кодировки JSON, где вы не можете изменить удаленный API.

+1 для 'штрудель' тоже :)