C# Language
Immutabilità
Ricerca…
Classe System.String
In C # (e .NET) una stringa è rappresentata dalla classe System.String. La parola chiave string
è un alias per questa classe.
La classe System.String è immutabile, ovvero una volta creato il suo stato non può essere modificato.
Quindi tutte le operazioni eseguite su una stringa come Substring, Remove, Replace, concatenation usando +
operatore etc creeranno una nuova stringa e la restituiranno.
Vedi il seguente programma per dimostrazione -
string str = "mystring";
string newString = str.Substring(3);
Console.WriteLine(newString);
Console.WriteLine(str);
Questo stamperà rispettivamente string
e mystring
.
Archi e immutabilità
I tipi immutabili sono tipi che, una volta modificati, creano una nuova versione dell'oggetto in memoria, anziché modificare l'oggetto esistente nella memoria. L'esempio più semplice di questo è il tipo di string
incorporato.
Prendendo il seguente codice, che aggiunge "mondo" alla parola "Ciao"
string myString = "hello";
myString += " world";
Ciò che sta accadendo in memoria in questo caso è che un nuovo oggetto viene creato quando si aggiunge alla string
nella seconda riga. Se si esegue questa operazione come parte di un loop di grandi dimensioni, è possibile che ciò causi problemi di prestazioni nell'applicazione.
L'equivalente mutabile per una string
è un StringBuilder
Prendendo il seguente codice
StringBuilder myStringBuilder = new StringBuilder("hello");
myStringBuilder.append(" world");
Quando lo esegui, stai modificando l'oggetto StringBuilder
stesso nella memoria.