ja przeglądania the source code of StyleCop i znalazłem ciekawą rzecz:Co to jest pole @namespace w klasie C#?
/// <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);
}
Co to jest? Czy jest to po prostu proste pole, w którym znak jest używany do wskazania, że jest to słowo kluczowe, a nie słowo kluczowe namespace
? Jeśli tak, to możesz użyć znaku-at dla dowolnego słowa zastrzeżonego (na przykład @dynamic
, @using
itd.)?
Nie tylko słowa zastrzeżone; możesz rozpocząć * dowolny * identyfikator przy pomocy @. Czemu? Ponieważ * nie wiesz, jakie słowa będą słowami kluczowymi w przyszłości *. Jeśli masz paranoję i obawiasz się, że pewnego dnia zmienimy słowo "blah" na słowo kluczowe kontekstualnie, możesz powiedzieć "int @ bla"; i upewnij się, że twój kod będzie się dalej kompilował, nawet jeśli dodamy operatora bla. –
Należy również zauważyć, że nazwa pola to "namespace", a nie "@namespace". @ Tylko mówi kompilatorowi "rzeczą, która następuje jest nazwa, a nie słowo kluczowe". W przeciwnym razie jest ignorowane. –