Строки в C# считаются неизменяемыми, потому что не существует способа и методов, способных изменить саму строку. 1 Любой метод строки может только вернуть новую строку. 1
Основная причина такого решения — производительность. 1 Строки, как и примитивные типы данных, нельзя менять практически ни в одном современном языке. 1
Вторая причина связана с простотой кода. 1 Когда вместо изменения создаются новые данные на основе старых, то код проще анализировать и модифицировать. 1
При этом переменные ссылки на строки (то есть объекты типа string) подлежат изменению, а следовательно, они могут ссылаться на другой объект. 5 Но содержимое самого объекта типа string не меняется после его создания. 5