.NET 4.x Копирование обобщенных коллекци - C#
Формулировка задачи:
Как правильно копировать обобщенные коллекции ? Например:
В данном случае у коллекции "a" 0-ой элемент тоже будет -10. А как скопировать коллекцию так что бы изменение "b" не влияло на "а" ?
class SimpleClass
{
public int Number;
public SimpleClass(int number)
{
Number = number;
}
}
//*************************
List<SimpleClass> a = new List<SimpleClass>();
for (int i = 0; i < 10; i++)
a.Add(new SimpleClass(i));
List<SimpleClass> b = new List<SimpleClass>(a);
b[0].Number = -10;Решение задачи: «.NET 4.x Копирование обобщенных коллекци»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication4 {
class Program {
static void Main(string[] args) {
List<Test> listA = new List<Test>();
listA.AddRange(Enumerable.Range(0, 10).Select(item => new Test(item)).ToArray());
List<Test> listB = new List<Test>(listA.Select(item => (Test)item.Clone()));
Console.WriteLine(listA[0].Number);
Console.WriteLine(listB[0].Number);
listB[0].Number = 10;
Console.WriteLine(listA[0].Number);
Console.WriteLine(listB[0].Number);
Console.ReadLine();
}
}
class Test :ICloneable {
public int Number;
public Test(int num) {
Number = num;
}
public object Clone() {
return new Test(this.Number);
}
}
}