Основы C#

Теория: Неизменяемость строк

Попробуйте ответить на вопрос, что выведет на экран следующий код?

var company = "hexlet";
company.ToUpper(); // в верхний регистр
Console.WriteLine(company); // => ?

Если ваш ответ, "HEXLET", то нам есть о чем поговорить) Эта программа выведет "hexlet". Почему?

Строки в C# неизменяемы. Не существует способа и методов, способных изменить саму строку. Любой метод строки может только вернуть новую строку. Основная причина, почему так сделано – производительность. Строки, как и примитивные типы данных нельзя менять практически ни в одном современном языке.

Вторая причина связана с простотой кода. Когда вместо изменения создаются новые данные на основе старых, то код проще анализировать и модифицировать. Особенно когда с данными происходит много манипуляций, с этим вам еще предстоит столкнуться.

Но как же все таки поступать, если данные нужно поменять? Для этого достаточно заменить значение переменной:

var name = "HODOR";
name = name.ToLower();
Console.WriteLine(name); // => "hodor"

С другой стороны, именно в такой ситуации можно создать новую переменную, с другим именем.

var name = "HODOR"
var processedName = name.ToLower();
Console.WriteLine(processedName); // => "hodor"

Такой подход нередко предпочтительнее, по соображением читаемости. Переменные, которые постоянно меняются сложнее анализировать. В конечном итоге все зависит от задачи и понимание того как лучше приходит с опытом.

Рекомендуемые программы

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845