2011-02-02 14 views
61

Eventuali duplicati:
What's the @ in front of a string for .NET?C# '@' prima di una stringa

Ho trovato questo in un libro C# studio

DirectoryInfo dir = new DirectoryInfo(key.Key.ToString() + @":\"); 

Il libro però non ha spiegato cosa il simbolo '@' era per. Ho provato a cercare MSDN C# Operators ma non è elencato lì. Posso indovinare che permette allo sviluppatore di non dover uscire da una "\" o non permettere di avere sequenze di escape?

A cosa serve e perché dovrei utilizzare @":\" anziché ":\\"?

Grazie per l'aiuto

Edit: Vedere il commento qui sotto per una domanda simile

risposta

107

Significa interpretare la stringa letteralmente (vale a dire, non si può sfuggire i caratteri all'interno della stringa se si utilizza il @ prefisso). Migliora la leggibilità nei casi in cui può essere utilizzato.

Ad esempio, se si sta lavorando con un percorso UNC, questo:

@"\\servername\share\folder" 

è più bello di questo:

"\\\\servername\\share\\folder" 
+8

Bene, è possibile eseguire il escape "raddoppiandoli, ad es., Stringa S = @" "" "; Console.Scrivi ("[{0}]", S); 'scrive' [""] ' –

+0

@Binary: True :-) –

+0

@Mark Quindi qualsiasi sequenza di escape nella stringa verrebbe ignorata e trattata in un testo letterale? – Daniel

1

Che cosa è questo e perché dovrei usare @" :\" invece di ":\"?

Perché quando si ha un lungo pungiglione con molti \ non è necessario sfuggire a tutti.

13

La prefissazione della stringa con un @ indica che deve essere trattato come un valore letterale, ossia senza escape.

Per esempio, se la stringa contiene un percorso è in genere fare questo:

string path = "c:\\mypath\\to\\myfile.txt"; 

L'@ permette di fare questo:

string path = @"c:\mypath\to\myfile.txt"; 

Avviso la mancanza di doppie barre (fuga)

51

Significa anche che è possibile utilizzare parole riservate come nomi variabili

dicono che si vuole una classe classe denominata, in quanto classe è una parola riservata, si può invece chiamare la classe classe:

IList<Student> @class = new List<Student>(); 
+2

Questo è molto bello - non sapevo che avresti potuto farlo. Grazie – Daniel

6

Come nota a margine, si dovrebbe anche tenere a mente che "la fuga" significa "utilizzando il back-slash come indicatore per caratteri speciali ". È possibile inserire un fine riga in una stringa, ad esempio:

String foo = "Hello\ 

There"; 
+0

+1 Ho sempre pensato che la nuova riga fosse esclusivamente per @ "... stile –

Problemi correlati