array arraylist区别 C#中ArrayList与Array的区别

C#中ArrayList与Array的区别――简介

Array 的容量是固定的,而 ArrayList 的容量是根据需要自动扩展的。ArrayList 提供添加、插入或移除某一范围元素的方法。在 Array 中,您只能一次获取或设置一个元素的值。使用 Synchronized 方法可以很容易地创建 ArrayList 的同步版本。而 Array 将一直保持它直到用户实现同步为止。

C#中ArrayList与Array的区别――方法/步骤

C#中ArrayList与Array的区别 1、

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[];错误,必须指定数组的大小或初始值

array arraylist区别 C#中ArrayList与Array的区别

//int[] array = new Array[3];//错误,无法转换为int[]

//int[] array=new int[];//错误,必须指定数组的大小或初始值

//平常我们int[],string[]...事实上就是声明一个array数组了

int[] array=newint[5];//或int[] arr={1,2,3};

for(inti=0; i<5; i++)...

{

array[i]=i*100;//注:array数组并不提供add,clear,addRange方法

Response.Write(array[i]+"<br>");

}

Response.Write(array.Length+"<br><br>");


C#中ArrayList与Array的区别 2、

什么是ArrayList

ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处:

动态的增加和减少元素

实现了ICollection和IList接口

灵活的设置数组的大小


C#中ArrayList与Array的区别 3、

使用ArrayList的实例:

ArrayList al = new ArrayList();

for (int i = 0; i < 3; i++)

...{

al.Add(i);

Response.Write(al[i].ToString() + "<br>");//输出数组中的元素值

}

Response.Write(al.Count + "<br><br>");

foreach (int obj in al)

{

Response.Write(obj+"-OK"+"<br>");

}


C#中ArrayList与Array的区别 4、

ArrayList和Array相互之间的转化

ArrayList List = new ArrayList();

List.Add(1);

List.Add(2);

List.Add(3);

Int32[] values = (Int32[])List.ToArray(typeof(Int32));

//例2:

ArrayList List = new ArrayList();

List.Add(1);

List.Add(2);

List.Add(3);

Int32[] values = new Int32[List.Count];

List.CopyTo(values);


C#中ArrayList与Array的区别 5、

ArrayList最佳使用建议

(1)ArrayList是Array的复杂版本

ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。

(2)内部的Object类型的影响

对于一般的引用类型来说,这部分的影响不是很大,但是对于值类型来说,往ArrayList里面添加和修改元素,都会引起装箱和拆箱的操作,频繁的操作可能会影响一部分效率。

但是恰恰对于大多数人,多数的应用都是使用值类型的数组。

消除这个影响是没有办法的,除非你不用它,否则就要承担一部分的效率损失,不过这部分的损失不会很大。

(3)数组扩容

这是对ArrayList效率影响比较大的一个因素。

每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组,在这个临界点的扩容操作,应该来说是比较影响效率的。

(4)频繁的调用IndexOf、Contains等方法(Sort、BinarySearch等方法经过优化,不在此列)引起的效率损失

首先,我们要明确一点,ArrayList是动态数组,它不包括通过Key或者Value快速访问的算法,所以实际上调用IndexOf、Contains等方法是执行的简单的循环来查找元素,所以频繁的调用此类方法并不比你自己写循环并且稍作优化来的快,如果有这方面的要求,建议使用Hashtable或SortedList等键值对的集合。

  

爱华网本文地址 » http://www.413yy.cn/a/8104540103/297088.html

更多阅读

无厘头文化中喜剧的笑与中国式后现代 无厘头喜剧鼻祖

■ 包兆会《文艺争鸣》2006年第2期  文学评论-艺术无厘头文化成了中国当代引人瞩目的一种文化现象。本文试图辨析中国当代文化中无厘头文化作为一种后现代文化现象的可能和事实,并从无厘头文化中“喜剧的笑”这一核心机制来阐明无

小学语文中常用的修辞手法与说明方法的作用 常用修辞手法及作用

小学语文中常用的修辞手法与说明方法的作用1.比喻:作用:将表达的内容说得生动具体形象,给人以鲜明深刻的印象。2.拟人:作用:把事物当成人写,使具体事物人格化,语言生动形象。3.夸张:作用:提示事物本质,烘托气氛,加强渲染力,引起联想效果。4.排比

声明:《array arraylist区别 C#中ArrayList与Array的区别》为网友素锦流年分享!如侵犯到您的合法权益请联系我们删除