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);//运行错误--集合大小是固定的。
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的意义。
为什么不用这个方法 ArrayList.AddRange