748 Stimmen

Was bedeutet das @ vor einer Zeichenkette in C#?

Dies ist eine .NET-Frage für C# (oder möglicherweise VB.net), aber ich versuche, herauszufinden, was ist der Unterschied zwischen den folgenden Deklarationen:

string hello = "hello";

vs.

string hello_alias = @"hello";

Der Ausdruck auf der Konsole macht keinen Unterschied, die Längeneigenschaften sind dieselben.

11voto

Marc Gravell Punkte 970173

Dies ist eine wortwörtliche Zeichenkette und ändert die Escape-Regeln - das einzige Zeichen, das jetzt escaped wird, ist ", escaped zu "". Dies ist besonders nützlich für Dateipfade und Regex:

var path = @"c:\some\location";
var tsql = @"SELECT *
            FROM FOO
            WHERE Bar = 1";
var escaped = @"a "" b";

usw.

9voto

Presidenten Punkte 6127

Das Setzen eines @ vor einer Zeichenkette ermöglicht es Ihnen, Sonderzeichen wie einen umgekehrten Schrägstrich oder Anführungszeichen zu verwenden, ohne spezielle Codes oder Escape-Zeichen benutzen zu müssen.

Sie können also schreiben:

string path = @"C:\My path\";

anstelle von:

string path = "C:\\My path\\";

9voto

aanund Punkte 1473

Kopiert von MSDN :

Zur Kompilierungszeit werden verbatim-Strings in normale Strings mit denselben Escape-Sequenzen umgewandelt. Wenn Sie also eine verbatim-Zeichenkette im Watch-Fenster des Debuggers betrachten, sehen Sie die Escape-Zeichen, die vom Compiler hinzugefügt wurden, und nicht die verbatim-Version aus Ihrem Quellcode. Zum Beispiel die wortgetreue Zeichenkette @"C:\files.txt" erscheint im Überwachungsfenster als "C:\\files.txt" .

3voto

Ray Wu Punkte 391

Die Erklärung ist einfach. Zur Darstellung der Zeichenkette "string\" benötigt der Compiler "string\\" denn \ ist ein Escape-Zeichen. Wenn Sie @"string\" Stattdessen können Sie Folgendes vergessen \\ .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X