把一个对象数组转换成ArrayList可以使用ArrayList.Adapter方法。这个方法把一个IList包裹在一个ArrayLIst里。现在上面的代码就可以写成:
Person[] personArray = myPerson.GetPersons();
ArrayList personList = ArrayList.Adapter(personArray);
ArrayList personList = ArrayList.Adapter(personArray);
把一个ArrayList转换成对象数组可以使用ArrayList.ToArray方法。现在上面的代码就可以写成:
Person[] personArrayFromList = (Person[])personList.ToArray(typeof(Person));
不要忘了在调用ArrayList.ToArray方法之前进行强制类型转换,否则在编译的时候会出错提示你不能把一个ArrayList转换成Person对象数组。
总结
综上所述,下次你要转换一个对象数组为ArrayList的时候,就可以使用静态方法ArrayList.Adapter;或者可以使用ArrayList对象的ArrayList.ToArray方法来实现相反的转换。
首先,ArrayList的ToArray方法是常用的,且没有任何问题;
但是使用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]);
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,最好还是利用拷贝的方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现