首页 新闻 会员 周边

arraylist是动态数组,以下代码为什么错误?

0
[已解决问题] 解决于 2012-02-10 08:41

int[] arr = new int[] { 1, 2, 3, 4, 5, 6 };

ArrayList arrayList = ArrayList.Adapter(arr);

 foreach (var item in arrayList)

{ Console.WriteLine(item); }

arrayList.Add(7);//运行错误--集合大小是固定的。

c#
viola的主页 viola | 菜鸟二级 | 园豆:211
提问于:2012-02-06 08:59
< >
分享
最佳答案
0

ArrayList.Adapter方法是直接把Array包裹在其里面,而没有进行任何复制,也就是说,这时Array和ArrayList指向的是同一个物体。 

这会造成什么后果呢? 

首先,改变Array或ArrayList任意一方的值,另一方也将随之改变: 
int[] MyIntArray = new int[3]; 
MyIntArray[0] = 1; 
MyIntArray[1] = 2; 
MyIntArray[2] = 3; 

ArrayList arrList = ArrayList.Adapter(MyIntArray); 
arrList[0] = 10; 

Console.WriteLine(MyIntArray[0]); 

结果跟你想象的一样,是10,而不是1。 

其次,由于Array是固定长度的,包裹了Array的ArrayList将无法执行Add,Remove等操作,这样在很多情况下就失去了我们使用ArrayList的意义。 

artwl | 专家六级 |园豆:16736 | 2012-02-06 09:18
其他回答(1)
0

为什么不用这个方法 ArrayList.AddRange

慧☆星 | 园豆:5640 (大侠五级) | 2012-02-07 09:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册