Stringhe letterali

Stringhe letterali

# stringhe letterali interpolate

Le stringhe letterali possono essere combinate con le nuove funzionalità di interpolazione delle stringhe presenti in C#6.

Console.WriteLine($@"Testing \n 1 2 {5 - 2}
New line");

Risultato:

Test \n 1 2 3
Nuova linea

Demo dal vivo su .NET Fiddle

Come previsto da una stringa letterale, le barre inverse vengono ignorate come caratteri di escape. E come previsto da una stringa interpolata, qualsiasi espressione racchiusa tra parentesi graffe viene valutata prima di essere inserita nella stringa in quella posizione.

# Escaping doppie virgolette

Le virgolette doppie all'interno di stringhe letterali possono essere evitate utilizzando 2 virgolette doppie sequenziali "" per rappresentare una virgoletta doppia " nella stringa risultante.

var str = @"""I don't think so,"" he said.";
Console.WriteLine(str);

Risultato:

"Non credo", ha detto.

Demo dal vivo su .NET Fiddle

# Le stringhe letterali indicano al compilatore di non usare caratteri di escape

In una stringa normale, il carattere barra rovesciata è il carattere di escape, che indica al compilatore di esaminare i caratteri successivi per determinare il carattere effettivo nella stringa. (Elenco completo dei caratteri di escape)

Nelle stringhe letterali non ci sono caratteri di escape (tranne "" che viene trasformato in un " ).Per usare una stringa letterale, anteponi semplicemente un @ prima delle virgolette iniziali.

Questa stringa letterale

var filename = @"c:\temp\newfile.txt"

Risultato:

c:\temp\nuovofile.txt

Invece di usare una stringa ordinaria (non letterale):

var filename = "c:\temp\newfile.txt"

che produrrà:

c:    emp
ewfile.txt

usando l'escape dei caratteri. (Il \t viene sostituito con un carattere di tabulazione e il \n viene sostituito con una nuova riga.)

Demo dal vivo su .NET Fiddle

# stringhe multilinea

var multiLine = @"This is a 

multiline paragraph";

Risultato:

Questo è un paragrafo a più righe

Demo dal vivo su .NET Fiddle

È anche possibile eseguire l'escape delle stringhe su più righe che contengono virgolette come se fossero su una singola riga, poiché sono stringhe letterali.

var multilineWithDoubleQuotes = @"I went to a city named

                        ""San Diego""

                      during summer vacation.";

Demo dal vivo su .NET Fiddle

Va notato che gli spazi/tabulazioni all'inizio delle righe 2 e 3 qui sono effettivamente presenti nel valore della variabile; controlla questa domanda per possibili soluzioni.

# Sintassi

  • @"le stringhe letterali sono stringhe il cui contenuto non è sottoposto a escape, quindi in questo caso \n non rappresenta il carattere di nuova riga ma due singoli caratteri:\ e n. Le stringhe letterali vengono create anteponendo al contenuto della stringa il carattere @"
  • @"Per evitare le virgolette, vengono utilizzate ""virgolette doppie"".
  • # Osservazioni

    Per concatenare stringhe letterali, usa il simbolo @ all'inizio di ogni stringa.

    var combinedString = @"\t means a tab" + @" and \n means a newline";