Ihr zweites Stück Code ist was Sie wollen (oder ein wörtliches Stringliteral @"\"
wie andere vorgeschlagen haben), und es fügt nur einen einzigen Backslash hinzu - drucken Sie es auf die Konsole und Sie ' Ich sehe das.
Diese zwei Teile des Codes:
%Vor%und
%Vor%sind genau äquivalent. In beiden Fällen wird ein einzelner umgekehrter Schrägstrich 1 angehängt.
Ich vermute, dass Sie von der Debugger-Ansicht verwirrt werden, die umgekehrte Schrägstriche (und einige andere Zeichen) entzieht. Sie können das sogar mit dem Debugger überprüfen, indem Sie S.Length
betrachten. Sie sehen 4 anstatt 5.
1 Beachten Sie, dass die Daten in der vorhandenen Zeichenfolge nicht geändert werden, der Wert von S
jedoch auf eine neue Zeichenfolge gesetzt wird, die aus besteht das Original mit einem Backslash am Ende. String-Objekte in .NET sind unveränderlich - aber das ist ein ganz anderes Thema ...
Sie haben bereits die Lösung. Der Grund, warum es beim Debuggen als abc\
angezeigt wird, ist, dass VS Backslashes entkommt, den Wert von S
in ein Konsolenfenster druckt und Sie abc\
sehen.
Sie könnten ein @
zum Anfang des Zeichenfolgenliterals hinzufügen, z. B.
Was das Gleiche erreichen wird.
Ihr zweites Beispiel ist vollkommen in Ordnung
%Vor%Visual Studio zeigt die Zeichenfolge maskiert an, deshalb sehen Sie in der Ergebniszeichenfolge zwei Schrägstriche. Wenn Sie die Deklarationszeichenfolge nicht wie folgt verwenden möchten
%Vor%Dies wird nicht kompiliert, da der Compiler nach dem Escape-Symbol ein Zeichen erwartet
%Vor%Sie können den umgekehrten Schrägstrich mit dem @ -Zeichen umgehen:
%Vor%Aber das erreicht genau das, was Sie in Ihrem zweiten Beispiel geschrieben haben. Die Verwirrung hierauf rührt von der Tatsache her, dass der Debugger von Visual Studio diesen Zeichen weiterhin ausweicht, obwohl die Quellzeichenfolge nur einen einzigen umgekehrten Schrägstrich enthält.
Sie werden sehen, dass Ihre Zeichenfolge überhaupt nicht falsch ist.
Der umgekehrte Schrägstrich ( \
) ist ein Escape-Zeichen und ermöglicht das Abrufen von Sonderzeichen, die normalerweise nicht in eine Zeichenfolge eingefügt werden könnten, z. B. "\r\n"
, die ein NewLine
-Zeichen darstellt. oder "\""
, was im Grunde ein "
-Zeichen ergibt.
Um das \
-Zeichen zu erhalten, müssen Sie "\"
eingeben, was genau das ist, was Sie tun und was Sie auch wollen.
Die Verwendung des Verbatims ( @
) ersetzt alle Vorkommen von \
in \
, also @"\" == "\"
. Dies wird normalerweise für Pfade und Regexes verwendet, wobei Literal \
in großen Zahlen benötigt wird. Das Sagen von @"C:\MyDirectory\MyFile"
ist komfortabler als das von "C:\MyDirectory\MyFile"
.