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.