Condividi tramite


string (Riferimenti per C#)

Il tipo string rappresenta una sequenza di zero o più caratteri Unicode. Il tipo string è un alias dell'elemento String in .NET Framework.

Sebbene string sia un tipo di riferimento, gli operatori di uguaglianza (== e !=) vengono definiti per confrontare i valori degli oggetti string, non i riferimenti. Questo rende più intuitiva la verifica dell'uguaglianza delle stringhe. Di seguito è riportato un esempio.

string a = "hello";
string b = "h";
// Append to contents of 'b'
b += "ello";
Console.WriteLine(a == b);
Console.WriteLine((object)a == (object)b);

Viene visualizzato "True" e quindi "False" perché i contenuti delle stringhe sono equivalenti, ma a e b non fanno riferimento alla stessa istanza di stringa.

L'operatore + concatena le stringhe:

string a = "good " + "morning";

Viene creato un oggetto stringa che contiene "good morning".

Le stringhe non sono modificabili, ovvero il contenuto di un oggetto di tipo stringa non può essere modificato dopo che l'oggetto è stato creato, nonostante la sintassi faccia inferire il contrario. Ad esempio, scrivendo il codice definito, il compilatore creerà in realtà un nuovo oggetto di tipo stringa nel quale archiviare la nuova sequenza di caratteri, quindi il nuovo oggetto verrà assegnato a b. La stringa "h" è quindi idonea per Garbage Collection.

string b = "h";
b += "ello";

È possibile utilizzare l'operatore [] per accedere in sola lettura ai singoli caratteri di un oggetto string:

string str = "test";
char x = str[2];  // x = 's';

Le stringhe letterali sono di tipo string e possono essere scritte in due formati, tra virgolette oppure tra virgolette e preceduti da @. Le stringhe letterali racchiuse tra virgolette sono precedute e seguite da virgolette doppie ("):

"good morning"  // a string literal

I valori letterali stringa possono contenere qualsiasi valore letterale carattere. Le sequenze di escape sono incluse. Nell'esempio seguente vengono utilizzate le sequenze di escape \\ per la barra rovesciata, \u0066 per la lettera f e \n per l'indicatore di nuova riga.

string a = "\\\u0066\n";
Console.WriteLine(a);

Nota

Il codice di escape \udddd, dove dddd è un numero a quattro cifre, rappresenta il carattere Unicode U+dddd. Sono inoltre riconosciuti i codici di escape Unicode a otto cifre: \Udddddddd.

I valori letterali stringa verbatim iniziano con @ e sono anche racchiusi tra virgolette doppie. Di seguito è riportato un esempio.

@"good morning"  // a string literal

Il vantaggio dell'utilizzo delle stringhe verbatim è che le sequenze di escape non vengono elaborate e questo semplifica la scrittura, ad esempio, di un nome di file completo:

@"c:\Docs\Source\a.txt"  // rather than "c:\\Docs\\Source\\a.txt"

Per includere delle virgolette doppie in una stringa tra virgolette preceduta da @, sarà necessario raddoppiare le virgolette:

@"""Ahoy!"" cried the captain." // "Ahoy!" cried the captain.

È inoltre possibile utilizzare il simbolo @ per avvalersi di identificatori a cui si fa riferimento (/reference) e che rappresentano parole chiave C#.

Per ulteriori informazioni sulle stringhe in C#, vedere Stringhe (Guida per programmatori C#).

Esempio

class SimpleStringTest 
{
   static void Main()
   {
      string a = "\u0068ello ";
      string b = "world";
      Console.WriteLine( a + b );
      Console.WriteLine( a + b == "Hello World" ); // == performs a case-sensitive comparison
   }
}
/* Output:
    hello world
    False
 */

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.

Vedere anche

Riferimenti

Parole chiave di C#

Tipi di riferimento (Riferimenti per C#)

Tipi di valore (Riferimenti per C#)

Concetti

Guida per programmatori C#

Procedure consigliate per l'utilizzo di stringhe in .NET Framework

Guida per programmatori C#

Creazione di nuove stringhe

Altre risorse

Riferimenti per C#

Operazioni di base sulle stringhe

Tabella di formattazione dei risultati numerici (Riferimenti per C#)