2010-04-14 8 views
7

Considérese la siguiente línea:¿Qué significa `@` al comienzo de una cadena en C#?

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

En esta línea, ¿por qué no @ necesita ser conectado?

+0

lo de mi pobre Inglés! –

+0

En javascript, eso sería un error: 'x = @" abc ";' – nickf

+1

Limpió un poco para usted :) * Se ejecuta para enviar la respuesta –

Respuesta

13

Indica una cadena literal, en la que el carácter '\' no indica una secuencia de escape.

+0

"Se puede duplicar cada barra invertida con el mismo efecto:' TARGET_BTN_IMG_URL = "\\\\ ad1-sunglim \\ Test \\"; '" –

+0

Sí, pero no es tan fácil para leer, y esta es la razón por la cual existe esta opción. –

+0

gracias por una respuesta clara y simple! –

2

porque la cadena contiene la secuencia de escape "\". para decirle al compilador que no trate "\" como secuencia de escape, tiene que usar "@".

7

@ le dice a C# que lo trate como una cadena literal verbatim string literal. Por ejemplo:

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

es un error porque \W y \M no son secuencias de escape válidos. Usted tiene que escribir de esta manera en su lugar:

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

para hacerlo más claro, se puede utilizar una cadena literal, el cual no reconoce \ como un carácter especial. Por lo tanto:

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

está perfectamente bien.


EDIT: MSDN ofrece estos ejemplos:

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

Merece la pena señalar el caso específico de querer poner una comilla '" 'en una cadena literal. Esto es posible usando comillas dobles' "" '. Esto se puede ver en' @ "Joe dijo" "Hola" "a me "' ejemplo anterior). –

+0

Los literales de cadena también pueden abarcar varias líneas ... – Noldorin

+0

Offtopic: ¿Dónde se originó ese prefijo "literal"? – OscarRyz

Cuestiones relacionadas