_List<T>_复制遇到的问题
在对List操作的时候,有时候需要对源集合备份,在不影响原来的集合的情况下,对拷贝集合进行其他操作等。
- 值类型情况 eg:
//源集合
List<int> intNums = new List<int> { 1, 2, 3, 4, 5 };
//该方式为传递一个引用
List<int> intNums2 = intNums;
intNums2.RemoveAt(0); //对其操作会影响源集合
//该方式可以实现集合复制
List<int> intNums3 = new List<int>(intNums);
intNums3.RemoveAt(0);
//该方式可以实现集合复制
List<int> intNums4 = new List<int>();
intNums.ForEach(i => intNums4.Add(i));
intNums4.RemoveAt(0);
结果展示: 其中intNums和intNums2引用的地址一样,均为{44032964}
- 引用类型情况 eg:
//源集合
List<MyPoint2d> points= new List<MyPoint2d> { new MyPoint2d(1,1), new MyPoint2d(1, 2), new MyPoint2d(1, 3) };
List<MyPoint2d> points2 = points;
points2.RemoveAt(0);
List<MyPoint2d> points3 = new List<MyPoint2d>(points);
points3.RemoveAt(0);
List<MyPoint2d> points4 = new List<MyPoint2d>();
points.ForEach(i => points4.Add(i));
points4.RemoveAt(0);
结果展示: 其中points和point2引用的地址一样,均为{48689052}
以上为.Net4.5环境,三种情况在值类型、引用类型情况中适用情况一致。