Escape-Zeichen

7

Es gibt eine Art von Zeichenfolge, in der Sie die Verarbeitung der Escapezeichen eines Literals deaktivieren und die Zeichenfolge unverändert ausgeben. Was ist diese Zeichenfolge? das Symbol, mit dem die Zeichenfolge vorangestellt wird, und eine mögliche Verwendung für?

ist es \?

    
Yves 30.09.2010, 16:00
quelle

5 Antworten

15

Es ist das @ -Zeichen: @"c:\path"

Es wird wörtliches Zeichenfolgenliteral genannt.

    
Mark Wilkins 30.09.2010, 16:03
quelle
8

Es wird Verbatim String-Literal genannt und verwendet das @ Präfix.

Ohne das Präfix ist es immer noch ein String-Literal - es ist ein reguläres String-Literal .

(Einige Leute denken irrtümlicherweise, dass der Begriff "String-Literal" nur für wortgetreue String-Literale gilt, aber er ist allgemeiner.)

Verbatim String-Literale sind nützlich für:

  • Mehrzeilige Zeichenfolgen
  • Zeichenfolgen, die natürlich umgekehrte Schrägstriche enthalten (wie Windows-Pfade und reguläre Ausdrücke)

Beachten Sie, dass nur zur Kompilierungszeit einen Unterschied macht. Mit anderen Worten, diese beiden Aussagen sind genau gleich :

%Vor%

Verbatim-Zeichenfolgenliterale werden immer noch wie reguläre Zeichenfolgenliterale interniert und beziehen sich immer noch auf Instanzen von System.String etc.

Aus Abschnitt 2.4.4.5 der C # 4.0 Spezifikation :

  

Ein reguläres Zeichenfolgenliteral besteht aus null oder mehr Zeichen, die in doppelte Anführungszeichen eingeschlossen sind, wie in "Hallo", und kann sowohl einfache Escape-Sequenzen (wie \ t für das Tab-Zeichen) als auch hexadezimale und Unicode-Escape-Sequenzen enthalten / p>      

Ein wörtliches Zeichenfolgenliteral besteht aus einem @ -Zeichen gefolgt von einem doppelten Anführungszeichen, null oder mehr Zeichen und einem schließenden Anführungszeichen. Ein einfaches Beispiel ist @ "Hallo". In einem wortgleichen String-Literal werden die Zeichen zwischen den Trennzeichen wortwörtlich interpretiert, die einzige Ausnahme ist eine quote-escape-Sequenz. Insbesondere werden einfache Escape-Sequenzen sowie hexadezimale und Unicode-Escape-Sequenzen nicht in wortgleichen String-Literalen verarbeitet. Ein wörtliches String-Literal kann sich über mehrere Zeilen erstrecken.

Beachten Sie, dass @ auch als Präfix verwendet werden kann, um Schlüsselwörter als Bezeichner zu verwenden:

%Vor%

Dies ist selten nützlich, kann aber manchmal erforderlich sein, wenn Sie einen bestimmten Bezeichner verwenden. (Das Schlüsselwort class kann beispielsweise für eine anonyme Typeigenschaft in ASP.NET MVC hilfreich sein.)

    
Jon Skeet 30.09.2010 16:06
quelle
5

@

%Vor%     
Matt 30.09.2010 16:04
quelle
2

Wenn ich eine Zeichenfolge als solche hatte: c: \ affe.txt

Ich müsste dem Schrägstrich wie folgt entkommen:
string s = "c:\monkey.txt"

beachte den doppelten Schrägstrich

Alternativ können Sie mit dem '@' Zeichen angeben, dass die Zeichenfolge wörtlich genommen werden soll:
string s = @"c:\monkey.txt"

    
WickyNilliams 30.09.2010 16:06
quelle

Tags und Links