ToArray,CopyTo,List (IEnumerable<T> collection)

public class Stu
{
 public string Name{get;set;}
}
void Main()
{
List<Stu> list=new List<Stu>();
list.Add(new Stu{Name="bert"});
list.Add(new Stu{Name="david"});

Stu[] r=new Stu[2];
list.CopyTo(r);

//Stu[] r=list.ToArray();
list[0].Name="mike";
//r[0].Name="mike";
list.Dump();
r.Dump();
}

List (IEnumerable<T> collection):

void Main()
{
Stu[] r=new Stu[2];
r[0]=new Stu{Name="bert"};
r[1]=new Stu{Name="david"};

List<Stu> list=new List<Stu>(r);
list[0].Name="mike";

list.Dump();
r.Dump();
}

结论:

如果集合中存储的是引用对象,ToArray与CopyTo方法产生的数组指向同样的对象。如果修改lsit[0]或者r[0],两个集合都会受到影响。

对于集合密集型的运算尤其要注意这些方法。比如ToArray, CopyTo, Clone等等。默认都是Shallow copy。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值