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

需求:深复制该列表。

 

Student实体类:

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

 

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

List originalList= new List();

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 CopyList(List originalList)
{
    List list = new List();

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

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

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

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

List 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

你可能感兴趣的:(【C#】List列表的深复制,引用类型深复制)