Collection и копия List: изменения исходного списка

Будет выведено c :1,4,5,6,7,2 l :1,4,5,7,3. Collection оборачивает исходный список, а конструктор List создаёт отдельную коллекцию с копиями элементов.

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

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

Будет выведено c :1,4,5,6,7,2 l :1,4,5,7,3. Collection оборачивает исходный список, а конструктор List создаёт отдельную коллекцию с копиями элементов.

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

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

Условие

Рассмотрите следующий фрагмент кода на C#. Определите, какой текст появится в консоли после выполнения всех операций.

var original = new List<int>() {1, 4, 5, 7};
var myCollection = new Collection<int>(original);
var myList = new List<int>(original);
original.Add(6);
original.Sort();

myCollection.Add(2);

myList.Add(3);

Console.WriteLine($"c :{string.Join(",", myCollection)} l :{string.Join(",", myList)}");

Ответ

Будет выведено c :1,4,5,6,7,2 l :1,4,5,7,3. Collection оборачивает исходный список, а конструктор List создаёт отдельную коллекцию с копиями элементов.

Collection<int>(original) использует original как внутреннее хранилище. Добавление 6 и сортировка original видны через myCollection; добавление 2 через обёртку меняет тот же список и помещает число в конец, уже после сортировки.

new List<int>(original) копирует элементы в момент создания, когда список равен [1,4,5,7]. Последующие изменения original его не затрагивают. Добавление 3 меняет только myList. Для Collection требуется пространство имён System.Collections.ObjectModel.

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

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

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

Подробнее