集合间的赋值被同时清空的问题

问题

创建一个集合 例如:List list1 为其填充内容后,在将其赋值到一个新集合 例如 List list2。当对 list1 进行清空时 list2 的值也会随之清空。

    List<int> list1 = new List<int> {1,2,3,4 };  //创建并填充集合
    List<int> list2; //定义 list2
    list2 = list1;  //将lsit1 赋值到 list2中
    list1.Clear();

原因

将 list1 赋值给 list2 的时候,实际并未将 list1 的内容复制 ,而是将 list1 的引用赋给了 list2。这意味着 list1 和 list2 指向同一个内存地址,修改一个集合会影响另一个集合。

解决方案

    List<int> list2 = list1.ToList(); // 创建 list1 的副本
    List<int> list2 = new List<int>(list1); // 创建 list1 的副本
posted @ 2024-12-20 17:46  有一个果园  阅读(18)  评论(0)    收藏  举报