# Immutability
# System.String class
In C# (and .NET) a string is represented by class System.String. The string
keyword is an alias for this class.
The System.String class is immutable, i.e once created its state cannot be altered.
So all the operations you perform on a string like Substring, Remove, Replace, concatenation using +
operator etc will create a new string and return it.
See the following program for demonstration -
string str = "mystring";
string newString = str.Substring(3);
Console.WriteLine(newString);
Console.WriteLine(str);
This will print string
and mystring
respectively.
# Strings and immutability
Immutable types are types that when changed create a new version of the object in memory, rather than changing the existing object in memory. The simplest example of this is the built-in string
type.
Taking the following code, that appends " world" onto the word "Hello"
string myString = "hello";
myString += " world";
What is happening in memory in this case is that a new object is created when you append to the string
in the second line. If you do this as part of a large loop, there is the potential for this to cause performance issues in your application.
The mutable equivalent for a string
is a StringBuilder
Taking the following code
StringBuilder myStringBuilder = new StringBuilder("hello");
myStringBuilder.append(" world");
When you run this, you are modifying the StringBuilder
object itself in memory.
← Polymorphism Indexer →