List复制的问题

_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环境,三种情况在值类型、引用类型情况中适用情况一致。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值