2010-09-30 24 views
7

C'è un tipo di stringa in cui si disabilita l'elaborazione dei caratteri di escape di un letterale e si stampa la stringa così com'è. Cos'è questa stringa? il simbolo usato per il prefisso della stringa e un possibile uso per?caratteri di escape

è \?

risposta

15

E 'il personaggio @: @"c:\path"

Si chiama verbatim string literal.

+0

grazie ragazzi. Ho dato a tutti i punti, ma devo scegliere la risposta migliore ed è la prima risposta. Grazie ancora per tutto il vostro aiuto. – Yves

+0

In questo caso, @Kombucha, assicurati di contrassegnarlo come risposta accettata. :) –

+0

L'ho fatto :) Avevo bisogno di aspettare 8 minuti prima di poter persino 'spuntare' il segno di spunta. Ho appena fatto :) – Yves

5

@

string sLiteral = @"This will be formatted. Even including 
return characters, 
    and spaces at the start of lines"; 
8

Si chiama verbatim string literal, e utilizza il prefisso @

senza il prefisso, è ancora una stringa letterale.. - è una stringa regolare .

(Alcune persone pensano erroneamente che il termine "stringa letterale" è valida solo per Verbatim stringhe letterali, ma è più generale di quello)

Verbatim stringhe letterali sono utili per:.

  • stringhe multilinea
  • stringhe che contengono naturalmente backslash (come ad come percorsi di Windows e le espressioni regolari)

Si noti che questo solo fa la differenza in fase di compilazione. In altre parole, queste due affermazioni sono precisamente equivalenti:

string x = "foo\\bar"; // Regular string literal 
string x = @"foo\bar"; // Verbatim string literal 

Verbatim letterali stringa sono ancora internati nello stesso modo come normali stringhe, ancora riferimento a istanze di System.String ecc

Dalla sezione 2.4 .4.5 della C# 4.0 specification:

Una stringa letterale regolare consiste di zero o più caratteri racchiusi tra virgolette, come in "ciao", e possono includere sia semplici sequenze di escape (ad esempio come \ t per il carattere di tabulazione) e le sequenze di escape esadecimali e Unicode.

Un letterale stringa letterale è costituito da un carattere @ seguito da un carattere a virgolette, zero o più caratteri e un carattere di virgoletta doppia di chiusura. Un semplice esempio è @ "ciao". In una letterale stringa letterale, i caratteri tra i delimitatori sono interpretati letteralmente, l'unica eccezione è una sequenza-escape-sequence. In particolare, le sequenze di escape semplici e le sequenze di escape esadecimali e Unicode non vengono elaborate in letterali stringa letterali. Una stringa letterale letterale può estendersi su più righe.

noti che @ può essere utilizzato anche come un prefisso per consentire di utilizzare parole chiave come identificatori:

int class = 10; // Invalid 
int @class = 10; // Valid 

Questo è raramente utile, ma a volte può essere necessario se si avete utilizzare un identificatore particolare (Il class parola chiave può essere utile per una proprietà di tipo anonimo in ASP.NET MVC, per esempio.)

2

se avessi una stringa come ad esempio: C: \ monkey.txt

avrei dovuto sfuggire alla tagliare in questo modo:
string s = "c:\\monkey.txt"

preavviso la doppia barra

in alternativa si può usare il simbolo '@' per indicare che la stringa è da prendere alla lettera:
string s = @"c:\monkey.txt"

Problemi correlati