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