Разбор поведения кода при копировании строк

Будет выведено test1. Присваивание second = "test2" меняет ссылку в переменной second, а не строковый объект, на который продолжает ссылаться first.

Короткий ответ

Что ответить на собеседовании

Будет выведено test1. Присваивание second = "test2" меняет ссылку в переменной second, а не строковый объект, на который продолжает ссылаться first.

Подробный разбор

Ответ с пояснениями

Условие

Что выведет следующая программа?

string first = "test1";
string second = first;
second = "test2";
Console.WriteLine(first);

Ответ

Будет выведено test1. Присваивание second = "test2" меняет ссылку в переменной second, а не строковый объект, на который продолжает ссылаться first.

После second = first обе переменные ссылаются на одну строку test1. Строки в C# неизменяемы: операция присваивания другой строки не может изменить содержимое прежней.

В последней строке читается first, которая всё ещё указывает на test1. Аналогично методы изменения строк возвращают новую строку, а не редактируют существующую на месте.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее