ArrayList赋值

作者:yaya | 时间:2008年12月16日 | 分类 学海无涯 | 标签 .net arraylist 学习 | 0回复

在ArrayList赋值给另一个ArrayList时候,很容易就不小心犯错误,然后在程序中找了半天,最后发现原来是ArrayList赋值的时候出现了错误。

现在,让我们来看看错误的情况。
假设有
       ArrayList a= new ArrayList();
       ArrayList b= new ArrayList();
       a.Add("1");
       a.Add("2"); 
现在要把a赋给b,该怎么做呢?一个简单又不会错的办法就是循环赋值
       foreach(Object o in a) { b.Add(o); }
而要是写成
      
b=a;
 就错了,因为其值是引用类型,所以赋值后,即把b的引用地址传给了a,这样的话,其操作的都是同一数据,改变a或者b,都将对数据有相同影响。也就是说,a和b“相同”了。比如b.Add("3"),则a也相当于做了a.Add("3") 所以,是不行了。
其实,还可以写作
       a = new ArrayList(b.GetRange(0, b.Count));
GetRange的参数可以选择自己需要的,0和b.Count则复制完所有数据。

  1. 1