Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpAqSc 163 of 509 menu
◀ ▶

Изменение источника после LINQ в C#

Запрос к List не копирует данные до перебора. Если список изменить до foreach, в результат попадёт новое значение.

После Add(3) перебор видит и добавленное число:

var nums = new List<int> { 1, 2 }; IEnumerable<int> q = nums.Select(n => n); nums.Add(3); Console.WriteLine(string.Join(",", q)); // выведет 1,2,3

Вызов ToArray сразу снимает копию. Запись в исходный массив эту копию не меняет. В консоли останется 1, хотя arr[0] уже равен 9:

int[] arr = [1, 2]; var snap = arr.Select(n => n).ToArray(); arr[0] = 9; Console.WriteLine(snap[0]);

Сохраните запрос к списку имён в отдельный список, добавьте ещё одно имя и выведите сохранённые имена. Нового среди них быть не должно.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить