Strings in C# (the System.String type) are immutable. Functions that act upon a string never change the instance of the string, but instead return a new instance of a string.
For example, to replace a portion of a string, you call the Replace method, assigning the result to the original string (or to a new string).
1 | quote = quote.Replace( "Hell" , "Minnesota" ); |
If you forget that a string is immutable, you may forget to assign the result of this call to something. The compiler won’t warn you about this.
1 2 3 4 5 6 7 8 | string quote = "Go to Heaven for the climate, Hell for the company." ; Console.WriteLine(quote); // Does NOT change quote. Rather, it creates // a new string, which we don't store anywhere quote.Replace( "Hell" , "Minnesota" ); Console.WriteLine(quote); |
The string is not changed, as we might have expected.
