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 anywherequote.Replace("Hell", "Minnesota");Console.WriteLine(quote); |
The string is not changed, as we might have expected.


