2010-04-14 10 views
7

Si consideri la seguente riga:Cosa significa `@` all'inizio di una stringa in C#?

readonly private string TARGET_BTN_IMG_URL = @"\\ad1-sunglim\Test\"; 

In questa linea, perché @ bisogno di essere attaccato?

+0

dispiace per il mio povero inglese! –

+0

In javascript, sarebbe un errore: 'x = @" abc ";' – nickf

+1

Ripulito un po 'per voi :) * Corre per postare risposta –

risposta

13

denota una stringa letterale, in cui il carattere '\' non indica una sequenza di escape.

+0

"si potrebbe raddoppiare ogni backslash con lo stesso effetto:' TARGET_BTN_IMG_URL = "\\\\ AD1-sunglim \\ test \\"; '" –

+0

Sì, ma non è così facile leggere, ecco perché questa opzione esiste. –

+0

grazie per la risposta chiara e semplice! –

2

perché si stringa contiene la sequenza escape "\". per dire al compilatore di non trattare "\" come sequenza di escape devi usare "@".

7

@ indica a C# di trattarlo come una stringa letterale verbatim string literal. Ad esempio:

string s = "C:\Windows\Myfile.txt"; 

è un errore perché \W e \M non sono sequenze di escape valide. Hai bisogno di scrivere in questo modo invece:

string s = "C:\\Windows\\Myfile.txt"; 

per renderlo più chiaro, è possibile utilizzare una stringa letterale, che non riconosce \ come un carattere speciale. Quindi:

string s = @"C:\Windows\Myfile.txt"; 

è perfettamente a posto.


EDIT: MSDN fornisce questi esempi:

string a = "hello, world";     // hello, world 
string b = @"hello, world";     // hello, world 
string c = "hello \t world";    // hello  world 
string d = @"hello \t world";    // hello \t world 
string e = "Joe said \"Hello\" to me";  // Joe said "Hello" to me 
string f = @"Joe said ""Hello"" to me";  // Joe said "Hello" to me 
string g = "\\\\server\\share\\file.txt"; // \\server\share\file.txt 
string h = @"\\server\share\file.txt";  // \\server\share\file.txt 
string i = "one\r\ntwo\r\nthree"; 
string j = @"one 
two 
three"; 
+0

Vale la pena notare il caso specifico di voler mettere un preventivo ' "'in una stringa verbatim. Questo è possibile utilizzando doppi apici'" "'. Questo può essere visto nel' @", ha detto Joe "" Ciao "" per "Esempio precedente." –

+0

I valori letterali delle stringhe possono anche includere più righe ... – Noldorin

+0

Offtopic: dove ha origine il prefisso "verbatim"? – OscarRyz