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?
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?
denota una stringa letterale, in cui il carattere '\' non indica una sequenza di escape.
"si potrebbe raddoppiare ogni backslash con lo stesso effetto:' TARGET_BTN_IMG_URL = "\\\\ AD1-sunglim \\ test \\"; '" –
Sì, ma non è così facile leggere, ecco perché questa opzione esiste. –
grazie per la risposta chiara e semplice! –
perché si stringa contiene la sequenza escape "\". per dire al compilatore di non trattare "\" come sequenza di escape devi usare "@".
@ 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";
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." –
I valori letterali delle stringhe possono anche includere più righe ... – Noldorin
Offtopic: dove ha origine il prefisso "verbatim"? – OscarRyz
dispiace per il mio povero inglese! –
In javascript, sarebbe un errore: 'x = @" abc ";' – nickf
Ripulito un po 'per voi :) * Corre per postare risposta –