Что такое поле @namespace в классе C#?
Я просматриваю исходный код StyleCop и обнаружил любопытную вещь:
/// <summary>
/// The namespace that the rule is contained within.
/// </summary>
private string @namespace;
// [...]
internal Rule(string name, string @namespace, string checkId, string context, bool warning) : this(name, @namespace, checkId, context, warning, string.Empty, null, true, false)
{
Param.Ignore(name, @namespace, checkId, context, warning);
}
Что это за вещь? Это просто поле, в котором знак at используется для указания того, что это поле, а не namespace
ключевое слово? Если это так, можно использовать at-sign для любого зарезервированного слова (например, @dynamic
, @using
, так далее.)?
5 ответов
Знак @ можно поставить перед зарезервированными словами, чтобы их можно было использовать в качестве имен переменных.
var @dynamic = ...
var @event = ....
Я узнал об этом и других вещах из этого вопроса.
В основном да. Помещение @ перед именем переменной останавливает возникновение ошибки из-за того, что имя переменной является ключевым словом.
http://msdn.microsoft.com/en-us/library/x53a06bb(VS.71).aspx
Да, вы можете использовать @
как first and only first
характер вашей переменной.
Этот метод обычно используется в паре с автоматической генерацией кода, так как могут быть созданы идентификаторы, которые являются ключевыми словами на целевом языке, например, если в схеме Xml выполняется генерация кода для создания классов C#, схема может иметь атрибут, называемый "событие". Это ключевое слово C#, поэтому генератор кода может вместо этого использовать "@event".
Как и другие люди ответили, точно, вы можете использовать зарезервированные ключевые слова, если вы затем используете префикс "@", но имхо, это не очень хорошая практика разработки. Я бы предпочел использовать его только в машинно-сгенерированном коде (например, в компании, в которой я работаю, у нас есть инструмент, который преобразует код Java в C#; поскольку в Java "событие" не является зарезервированным словом, наш исходный код Java может содержать такие идентификаторы)
Лучший
Адриано