C#中ArrayList.ToArray()用法
来源:互联网 发布:高拱 知乎 编辑:程序博客网 时间:2024/06/01 08:02
转载自:http://blog.csdn.net/kj297296053/article/details/9474959
概述
这篇文章解释如何使用最简单的方法把Array转换成ArrayList和相反的转换。
使用的.NET类
System.Collections.ArrayList
介绍
操作数组是应用开发中最普通的任务之一。有时你需要使用一组对象来获得操作对象的属性的能力,并且有时你为了更大的灵活性而使用ArrayList。在这两种方式之间进行抉择是非常痛苦的事情。这篇文章教你如何更好的去解决这个问题。
笨方法
几乎所有的初学者都是手工进行的变换。就从转换对象数组到ArrayList来说,一种方法可能是先初始化一个ArrayList对象,然后再循环把数组里的每一个对象添加到ArrayList中。
让我们假设我们有一个称做Person的对象。下面是通常的做法:
Person[] personArray = myPerson.GetPersons();
ArrayList personList = new ArrayList();
foreach(Person objPerson in personArray)
{
personList.Add(objPerson);
}
并且也可以使用这种方式从一个ArrayLIst创建一个对象数组:
Person[] personArrayFromList = new Person[personList.Count];
int arrayCounter = 0;
foreach(Person objPerson in personList)
{
personArrayFromList.SetValue(objPerson,arrayCounter++);
}
简单的方法
但是我们为什么不使用.NET类库内置的方法来实现这个功能呢?
把一个对象数组转换成ArrayList可以使用ArrayList.Adapter方法。这个方法把一个IList包裹在一个ArrayLIst里。现在上面的代码就可以写成:
Person[] personArray = myPerson.GetPersons();
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]);
结果跟你想象的一样,是10,而不是1。
其次,由于Array是固定长度的,包裹了Array的ArrayList将无法执行Add,Remove等操作,这样在很多情况下就失去了我们使用ArrayList的意义。
因此,如果你真的想把一个数组赋给ArrayList,最好还是利用拷贝的方法。
- C#中ArrayList.ToArray()用法
- C#中ArrayList.ToArray()用法
- ArrayList.toArray()的用法
- ArrayList.toArray()的用法
- ArrayList.toArray()的用法
- C# ArrayList.ToArray() (将 ArrayList 的元素复制到新数组中)
- 深入理解ArrayList中 toArray(),toArray(T[])方法
- ArrayList.toArray()
- ArrayList.ToArray()
- C#中ArrayList的用法
- C#中ArrayList用法小结
- ArrayList中toArray()方法的使用注意
- ArrayList中toArray(T[] a)方法分析
- java中toArray用法注意事项
- java中toArray用法注意事项
- java中toArray用法注意事项
- java中toArray用法注意事项
- ArrayList在ORM中branchId.in(arrayList.toarray())
- MySQL 5.7版本sql_mode=only_full_group_by问题
- 关于微信第三方登录 AppId 和AppSecret 忘记修改无法登录问题
- caffe加层问题记录
- WPS国际版添加中文包
- static变量与实例变量 java
- C#中ArrayList.ToArray()用法
- 909422229_在windows上安装redis并设置密码,IP绑定【提供安装包】
- asp.net response.ContentType 下载文件的四种方法
- 使用 Intellij IDEA 与 Gradle 构建Spring项目
- xfire客户端调用服务端报错 XFireRuntimeException: Could not invoke service.. Server returned error code = 4ji
- Apache ActiveMQ实战(1)-基本安装配置与消息类型
- MySQL之删除慢查询日志
- eclipse安装sonarLint插件
- Python3.6 安装Flask 模块