c#怎么将arraylist double中的数转为double类型

123549人阅读
【C#那些事】(12)
&&& 在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢。
&&& 数组在C#中最早出现的。在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单。
string[] s=new string[2];
s[1]=&a1&;
&&& 但是数组存在一些不足的地方。在数组的两个数据间插入数据是很麻烦的,而且在声明数组的时候必须指定数组的长度,数组的长度过长,会造成内存浪费,过段会造成数据溢出的错误。如果在声明数组时我们不清楚数组的长度,就会变得很麻烦。
&&& 针对数组的这些缺点,C#中最先提供了ArrayList对象来克服这些缺点。
&&& ArrayList是命名空间System.Collections下的一部分,在使用该类时必须进行引用,同时继承了IList接口,提供了数据存储和检索。ArrayList对象的大小是按照其中存储的数据来动态扩充与收缩的。所以,在声明ArrayList对象时并不需要指定它的长度。
//ArrayList
ArrayList list1 = new ArrayList();
//新增数据
list1.Add(&cde&);
list1.Add(5678);
//修改数据
list[2] = 34;
//移除数据
list.RemoveAt(0);
//插入数据
list.Insert(0, &qwe&);
&&& 从上面例子看,ArrayList好像是解决了数组中所有的缺点,为什么又会有List?
&&& 我们从上面的例子看,在List中,我们不仅插入了字符串cde,而且插入了数字5678。这样在ArrayList中插入不同类型的数据是允许的。因为ArrayList会把所有插入其中的数据当作为object类型来处理,在我们使用ArrayList处理数据时,很可能会报类型不匹配的错误,也就是ArrayList不是类型安全的。在存储或检索值类型时通常发生装箱和取消装箱操作,带来很大的性能耗损。
&&& 装箱与拆箱的概念:
&&& 简单的说:
&&& 装箱:就是将值类型的数据打包到引用类型的实例中
&&& 比如将string类型的值abc赋给object对象obj
i=”abc”;
object obj=(object)i;
&&& 拆箱:就是从引用数据中提取值类型
&&& 比如将object对象obj的值赋给string类型的变量i
object obj=”abc”;
string i=(string)
&&& 装箱与拆箱的过程是很损耗性能的。
&&& 因为ArrayList存在不安全类型与装箱拆箱的缺点,所以出现了泛型的概念。List类是ArrayList类的泛型等效类,它的大部分用法都与ArrayList相似,因为List类也继承了IList接口。最关键的区别在于,在声明List集合时,我们同时需要为其声明List集合内数据的对象类型。
List&string& list = new List&string&();
//新增数据
list.Add(“abc”);
//修改数据
list[0] = “def”;
//移除数据
list.RemoveAt(0);
&&& 上例中,如果我们往List集合中插入int数组123,IDE就会报错,且不能通过编译。这样就避免了前面讲的类型安全问题与装箱拆箱的性能问题了。
&&& 数组的容量是固定的,您只能一次获取或设置一个元素的值,而ArrayList或List&T&的容量可根据需要自动扩充、修改、删除或插入数据。
&&& 数组可以具有多个维度,而 ArrayList或 List& T& 始终只具有一个维度。但是,您可以轻松创建数组列表或列表的列表。特定类型(Object 除外)的数组 的性能优于 ArrayList的性能。 这是因为 ArrayList的元素属于 Object 类型;所以在存储或检索值类型时通常发生装箱和取消装箱操作。不过,在不需要重新分配时(即最初的容量十分接近列表的最大容量),List& T& 的性能与同类型的数组十分相近。
&&& 在决定使用 List&T& 还是使用ArrayList 类(两者具有类似的功能)时,记住List&T& 类在大多数情况下执行得更好并且是类型安全的。如果对List& T& 类的类型T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型T使用值类型,则需要考虑实现和装箱问题。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:807409次
积分:9242
积分:9242
排名:第1552名
原创:142篇
评论:1673条
阅读:47728
阅读:16560
文章:15篇
阅读:75225
(1)(1)(1)(1)(3)(1)(1)(1)(2)(2)(1)(1)(1)(9)(20)(4)(4)(4)(5)(6)(8)(4)(6)(4)(4)(4)(4)(4)(5)(7)(5)(2)(1)(6)(6)(4)C#中List和数组之间转换的方法
作者:whazhl
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了C#中List和数组之间转换的方法,涉及比较简单的转换技巧,需要的朋友可以参考下
本文实例讲述了C#中List和数组之间转换的方法。分享给大家供大家参考。具体分析如下:
一、List转数组 (从List&string&转到string[])
List&string& listS=new List&string&();
listS.Add("str");
listS.Add("hello");
string[] str=listS.ToArray();
二、数组转List (从string[]转到List&string&)
string[] str={"str","string","abc"};
List&string& listS=new List&string&(str);
希望本文所述对大家的C#程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具1647人阅读
.Net(108)
原文地址:&
06 日Dec, 2005 年& 作者: Aldwin Enriquez&
Narrasoft 菲律宾公司。&&&
这篇文章解释如何使用最简单的方法把Array转换成ArrayList和相反的转换。
使用的.NET类
System.Collections.ArrayList&
操作数组是应用开发中最普通的任务之一。有时你需要使用一组对象来获得操作对象的属性的能力,并且有时你为了更大的灵活性而使用ArrayList。在这两种方式之间进行抉择是非常痛苦的事情。这篇文章教你如何更好的去解决这个问题。
几乎所有的初学者都是手工进行的变换。就从转换对象数组到ArrayList来说,一种方法可能是先初始化一个ArrayList对象,然后再循环把数组里的每一个对象添加到ArrayList中。
让我们假设我们有一个称做Person的对象。下面是通常的做法:
1Person[]&personArray&=&myPerson.GetPersons();
2ArrayList&personList&=&new&ArrayList();
3foreach(Person&objPerson&in&personArray)
5&&personList.Add(objPerson);
并且也可以使用这种方式从一个ArrayLIst创建一个对象数组:
1Person[]&personArrayFromList&=&new&Person[personList.Count];
2int&arrayCounter&=&0;
3foreach(Person&objPerson&in&personList)
5&&personArrayFromList.SetValue(objPerson,arrayCounter++);
简单的方法
但是我们为什么不使用.NET类库内置的方法来实现这个功能呢?
把一个对象数组转换成ArrayList可以使用ArrayList.Adapter方法。这个方法把一个IList包裹在一个ArrayLIst里。现在上面的代码就可以写成:
1Person[]&personArray&=&myPerson.GetPersons();
2ArrayList&personList&=&ArrayList.Adapter(personArray);
把一个ArrayList转换成对象数组可以使用ArrayList.ToArray方法。现在上面的代码就可以写成:
1Person[]&personArrayFromList&=&(Person[])personList.ToArray(typeof(Person));
不要忘了在调用ArrayList.ToArray方法之前进行强制类型转换,否则在编译的时候会出错提示你不能把一个ArrayList转换成Person对象数组。
综上所述,下次你要转换一个对象数组为ArrayList的时候,就可以使用静态方法ArrayList.Adapter;或者可以使用ArrayList对象的ArrayLIst.ToArray方法来实现相反的转换。
作者:Justin
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:436714次
积分:6177
积分:6177
排名:第3119名
原创:128篇
转载:258篇
评论:17条
(1)(1)(1)(1)(2)(3)(3)(4)(1)(3)(1)(5)(6)(4)(7)(2)(3)(3)(3)(3)(3)(7)(7)(2)(6)(3)(11)(6)(21)(1)(5)(2)(7)(1)(8)(7)(5)(1)(3)(2)(1)(11)(3)(1)(7)(13)(1)(5)(1)(2)(9)(3)(6)(2)(1)(7)(4)(23)(12)(4)(2)(5)(5)(2)(1)(4)(15)(4)(4)(1)(2)(7)(11)(2)(3)(7)(13)(34)随笔 - 38&
评论 - 37&
&&&&&&&&&&&
一,C# array数组的用法范例: type[]&& typename=new type[size]; 如int[] a=new int[2];string[] str=new string[5];实事上我们平常是用int[],string[]...的,此时我们已经创建一个Array数组,只不过我们平常没有这种意识而已.(1):type数据类型不能缺;且要统一,而不能是如 int[] a=new Array[];(2):数组的大小size不能缺,否则c#认为是出错的,因为数组是一段固定长度的内存;(3):右边是一个中括号[],而不是()实例:&&&&&&&&&&& //Array ar = new Array();//错误,无法创建抽象类或接口&System.Array&的实例&&&&&&&&&&& //int[] array = new Array[3];错误,&&&&&&&&&&& //int[] array = new Array[];错误,必须指定数组的大小或初始值&&&&&&&&&&& //int[] array = new Array[3];//错误,无法转换为int[]&&&&&&&&&&& //int[] array=new int[];//错误,必须指定数组的大小或初始值&&&&&&&&&&& //平常我们int[],string[]...事实上就是声明一个array数组了&&&&&&&&&&& int[] array = new int[5];&&&&&&&&&&& //或int[] arr={1,2,3};&&&&&&&&&&& for (int i = 0; i & 5; i++)&&&&&&&&&&& {&&&&&&&&&&&&&&& array[i] = i*100;//注:array数组并不提供add,clear,addRange..方法,而是直接设置或获取值&&&&&&&&&&&&&&& Response.Write(array[i] + "&br&");&&&&&&&&&&& }&&&&&&&&&&& Response.Write(array.Length + "&br&&br&");或int [] intarray=new int[9];&&&& intarray[0]=10;&&&& intarray[1]=20;&&&& intarray[2]=30;&&&& intarray[3]=40;&&&& intarray[4]=50;&&&& intarray[5]=60;&&&& intarray[6]=70;&&&& intarray[7]=80;&&&& intarray[8]=90;二,C# ArrayList数组的用法范例:ArrayList al = new ArrayList();&&&&&&&&&&& for (int i = 0; i & 3; i++)&&&&&&&&&&& {&&&&&&&&&&&&&&& al.Add(i);&&&&&&&&&&&&&&& Response.Write(al[i].ToString() + "&br&");//输出数组中的元素值&&&&&&&&&&&&&&& // Response.Write(al[i]+ "&br&");&&&&&&&&&&& }&&&&&&&&&&& Response.Write(al.Count + "&br&&br&");&&&&&&&&&&& foreach (int obj in al)//或foreach (object obj in al),因为al是一个object类型的数组&&&&&&&&&&& {&&&&&&&&&&&&&&& Response.Write(obj+"-OK"+"&br&");&&&&&&&&&&& }三,ArrayList和Array相互之间的转化&&&&&&&& (1)以下是把ArrayList数组中的值拷贝到Array中去的实例用法&&&&&&&&& //int[] IResult=new int[al.Count];&&&&&&&&&&& //al.CopyTo(IResult);&&&&&&&&&&& //或是用下面的方法&&&&&&&&& int[] IResult = (int[])al.ToArray(typeof(Int32));//ToArray(Int32);这样错误,一定要强制类型转换&&&&&&&&& //Person[] personArrayFromList = (Person[])personList.ToArray(typeof(Person));& &&&&&&&& foreach(int item&& in IResult)&&&&&&&&&&& {&&&&&&&&&&&&& Response.Write(item.ToString());&&&&&&&&&&& }Response.Write("以下是把Array数组中的值拷贝到ArrayList中去的实例用法" + "&br&" + "结果为:&br&");&&&&&&&&&&& int[] a ={ 222, 333, 555 };&&&&&&&&&&& ArrayList arrList = new ArrayList();&&&&&&&&&&& foreach (object obj in a)//或foreach (int obj in a)&&&&&&&&&&& {&&&&&&&&&&&&&&& arrList.Add(obj);&&&&&&&&&&&&&&& Response.Write(obj+"&br&");&&&&&&&&&&& }
阅读(...) 评论()

我要回帖

更多关于 list转为arraylist 的文章

 

随机推荐