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