Ich bin gerade the source code of StyleCop, und ich fand eine merkwürdige Sache:Was ist @namespace-Feld in C# -Klasse?
/// <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);
}
Was ist dieses Ding? Ist es nur ein einfaches Feld, in dem ein At-Zeichen verwendet wird, um anzuzeigen, dass es sich um ein Feld und nicht um ein namespace
Schlüsselwort handelt? Wenn ja, darf At-Zeichen für jedes reservierte Wort verwendet werden (z. B. @dynamic
, @using
usw.)?
Nicht nur reservierte Wörter; Sie können * jeden * Bezeichner mit einem @ beginnen. Warum? Denn * du weißt nicht, welche Wörter in Zukunft Schlüsselwörter sind *. Wenn Sie paranoid sind und befürchten, dass wir eines Tages "blah" in ein kontextabhängiges Schlüsselwort verwandeln, dann können Sie "int @blah" sagen. und stellen Sie sicher, dass Ihr Code auch dann kompiliert wird, wenn wir den Blah-Operator hinzufügen. –
Beachten Sie auch, dass der Name des Feldes "Namespace" ist, nicht "@namespace". Das @ teilt dem Compiler lediglich mit, dass "das Folgende ein Name und kein Schlüsselwort ist". Es wird sonst ignoriert. –