Скопировтаь элементы списка в другой так, чтобы при их модификации в одном, они не менялись во втором - C#
Формулировка задачи:
Доброго времени суток. Столкнулся с проблемой, причина которой кроется, как я понял в ссылочных типах данных в c#.
Из файла загружаются данные в List L1. Дальше при нажатии кнопки на форме данные из L1 должны скопироваться в List L2 (типы одинаковые). Далее с данными в L2 происходят некоторые операции. Вопрос: как сделать чтобы в L1 при этом ничего не менялось?
static void Main(string[] args) { List<cl1> L1 = new List<cl1>(); List<cl1> L2 = new List<cl1>(); L1.Add(new cl1("1")); L1.Add(new cl1("2")); L2 = L1; //далее из-за ссылок будет изменяться и L1. L2[0].s = "4"; foreach (cl1 item in L1) { Console.WriteLine(item.s); // вывод: 4, 2. (вместо 1, 2) } Console.ReadLine(); } class cl1 { public string s; public cl1(string ss) { s = ss; } }
Решение задачи: «Скопировтаь элементы списка в другой так, чтобы при их модификации в одном, они не менялись во втором»
textual
Листинг программы
L2 = L1.Select(cl => new cl1(cl.s)).ToList()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д