Ich habe festgestellt, dass Sie Ihren Variablennamen mit einem '@' in C # beginnen können. In meinem C # -Projekt habe ich einen Webdienst verwendet (ich habe meinem Projekt einen Webverweis hinzugefügt), der in Java geschrieben wurde. Eines der in der WSDL definierten Schnittstellenobjekte hatte eine Mitgliedsvariable mit dem Namen "params". Offensichtlich ist dies ein reserviertes Wort in C #, sodass Sie keine Klasse mit einer Mitgliedsvariablen mit dem Namen "params" haben können. Das generierte Proxy-Objekt enthielt eine Eigenschaft, die folgendermaßen aussah:
public ArrayList @params {
get { return this.paramsField; }
set { this.paramsField = value; }
}
Ich habe die VS 2008 c # -Dokumentation durchsucht, konnte aber nichts darüber finden. Auch die Suche bei Google hat mir keine nützlichen Antworten gegeben. Was ist also die genaue Bedeutung oder Verwendung des Zeichens '@' in einem Variablen- / Eigenschaftsnamen?
quelle
@
?@
Symbol nicht so wie die C # -Sprachenspezifikation. Es unterstützt dies seit seiner ersten Version, C # 1.0 (veröffentlicht mit .NET 1.0). csharpindepth.com/articles/chapter1/Specifications.aspx[ ]
eine wörtliche Kennung angeben, zDim [String] As String
.Sie können lediglich ein reserviertes Wort als Variablennamen verwenden. IMHO nicht empfohlen (außer in Fällen wie Sie).
quelle
yield
Schlüsselwort ist kein reserviertes Wort und kann nur in Kontexten verwendet werden, in denen keine Kennung legal erscheinen könnte . Ein Ziel beim Entwerfen neuer Features für C # besteht darin, sie so zu erstellen, dass jedes Programm, das vor dem Hinzufügen eines neuen Features legal war, danach legal ist und dieselbe Bedeutung hat .@Html.TextboxFor( , , , new { @class="my-css-class" } )
ist ein gutes Beispiel, bei dem Sie es nicht wirklich umgehen können, ohne den HTML-Code manuell schreiben zu müssen oder die Attribute zu einem späteren Zeitpunkt von Javascript ändern zu lassen.In C # wird das Zeichen at (@) verwendet, um Literale zu bezeichnen, die explizit nicht den relevanten Regeln in der Sprachspezifikation entsprechen.
Insbesondere kann es für Variablennamen verwendet werden, die mit reservierten Schlüsselwörtern in Konflikt stehen (z. B. können Sie keine Parameter verwenden, aber Sie können stattdessen @params verwenden, genauso wie mit out / ref / einem anderen Schlüsselwort in der Sprachspezifikation). Zusätzlich kann es für nicht entkappte String-Literale verwendet werden. Dies ist besonders relevant bei Pfadkonstanten, z. B. anstatt dass
path = "c:\\temp\\somefile.txt"
Sie schreiben könnenpath = @"c:\temp\somefile.txt"
. Es ist auch sehr nützlich für reguläre Ausdrücke.quelle
Im Gegensatz zu Perls Siegeln hat ein
@
Präfix vor einem Variablennamen in C # keine Bedeutung. Wennx
es sich um eine Variable handelt,@x
handelt es sich um einen anderen Namen für dieselbe Variable.Wie Sie festgestellt
@
haben, hat das Präfix jedoch eine Verwendung. Sie können es verwenden, um Variablennamen zu klären, die C # sonst als illegal ablehnen würde.quelle
Mit dem
@
Symbol können Sie reservierte Schlüsselwörter für den Variablennamen verwenden. wie@int
,@string
,@double
usw.Zum Beispiel:
Der obige Code funktioniert gut, aber der folgende funktioniert nicht:
quelle
Sie können einfach reservierte Wörter als Variablennamen verwenden. Ich wollte neulich einen Var namens
event
. Ich wollte_event
stattdessen mitgehen , aber mein Kollege erinnerte mich daran, dass ich es@event
stattdessen einfach anrufen könnte .quelle
Ein weiterer Anwendungsfall sind Erweiterungsmethoden. Der erste spezielle Parameter kann unterschieden werden, um seine wahre Bedeutung mit dem
@this
Namen zu kennzeichnen . Ein Beispiel:quelle
Wenn wir ein Schlüsselwort als Namen für einen Bezeichner verwenden, wird der Compilerfehler "Bezeichner erwartet, 'Bezeichnername' ist ein Schlüsselwort" angezeigt. Um diesen Fehler zu beheben, stellen Sie dem Bezeichner "@" voran. Solche Bezeichner sind wörtliche Bezeichner. Das Zeichen @ ist eigentlich nicht Teil des Bezeichners, daher kann der Bezeichner in anderen Sprachen als normaler Bezeichner ohne Präfix angezeigt werden
quelle
Sie können es verwenden, um die reservierten Schlüsselwörter als Variablennamen wie zu verwenden
Der Compiler ignoriert das
@
und kompiliert die Variable alsint
Es ist keine übliche Praxis, Gedanken zu verwenden
quelle