【C#】List列表的深复制,引用类型深复制

需求:深复制该列表。

Student实体类:

public class Student
{
    public string Name { get; set; }
    public int Age { get; set; }
}

准备一个List列表,里面放两个元素。

List<Student> originalList= new List<Student>();

Student s1 = new Student(){ Name = "A", Age = 10 };
originalList.Add(s1);
Student s2 = new Student(){ Name = "B", Age = 12 };
originalList.Add(s2);

 
定义一个深复制List列表的方法。

public List<Student> CopyList(List<Student> originalList)
{
    List<Student> list = new List<Student>();

    foreach (Student obj in originalList)
    {
        Student s= new Student();

        s.Name= obj.Name;
        s.Age= obj.Age;

        list.Add(s);
    }
    return list;
}

调用该方法即可得到一个新的列表。

List<Student> newList = CopyList(originalList);

最后测试:
测试是否真的是深复制,而非浅复制。只要修改originalList(比如清空该列表),观察newList是否随之变化。

// 测试:修改源列表
originalList[0].Age = 15;
// 观察新列表是否有变化
System.Console.WriteLine(newList[0].Age);

其他参考:

http://stackoverflow.com/questions/35129819/how-to-make-a-deep-copy-of-a-list-of-object

原文地址:https://www.cnblogs.com/guxin/p/csharp-list-deep-copy.html