Скопировтаь элементы списка в другой так, чтобы при их модификации в одном, они не менялись во втором - 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()

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5
Похожие ответы