您的位置:首页 > 编程语言 > C#

c#中的ArrayList属性祥解及其语法…

2014-03-14 21:35 232 查看
1、什么是ArrayList  

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

 
动态的增加和减少元素  

 
实现了ICollection和IList接口  

 
灵活的设置数组的大小  

   

 
2、如何使用ArrayList  

         
最简单的例子:  

  ArrayList  
List  
=  
new  
ArrayList();  

  for(  
int  
i=0;i<10;i++  
)  
//给数组增加10个Int元素  

 
List.Add(i);    

 
//..程序做一些处理  

 
List.RemoveAt(5);//将第6个元素移除  

  for(  
int  
i=0;i<3;i++  
)  
//再增加3个元素  

   
List.Add(i+20);  

  Int32[]  
values  
=  
(Int32[])List.ToArray(typeof(Int32));//返回ArrayList包含的数组  

   

 
这是一个简单的例子,虽然没有包含ArrayList所有的方法,但是可以反映出ArrayList最常用的用法  

   

 
3、ArrayList重要的方法和属性  

  1)构造器  

         
ArrayList提供了三个构造器:  

  public  
ArrayList();  

 
默认的构造器,将会以默认(16)的大小来初始化内部的数组  

  public  
ArrayList(ICollection);  

 
用一个ICollection对象来构造,并将该集合的元素添加到ArrayList  

  public  
ArrayList(int);  

 
用指定的大小来初始化内部的数组  

   

 
2)IsSynchronized属性和ArrayList.Synchronized方法  

         
IsSynchronized属性指示当前的ArrayList实例是否支持线程同步,而ArrayList.Synchronized静态方法则会返回一个ArrayList的线程同步的封装。  

         
如果使用非线程同步的实例,那么在多线程访问的时候,需要自己手动调用lock来保持线程同步,例如:  

  ArrayList  
list  
=  
new  
ArrayList();  

  //...  

  lock(  
list.SyncRoot  
)  
//当ArrayList为非线程包装的时候,SyncRoot属性其实就是它自己,但是为了满足ICollection的SyncRoot定义,这里还是使用SyncRoot来保持源代码的规范性  

  {  

  list.Add(  
“Add  
a  
Item”  
);  

  }  

   

           
如果使用ArrayList.Synchronized方法返回的实例,那么就不用考虑线程同步的问题,这个实例本身就是线程安全的,实际上ArrayList内部实现了一个保证线程同步的内部类,ArrayList.Synchronized返回的就是这个类的实例,它里面的每个属性都是用了lock关键字来保证线程同步。  

   

 
3)Count属性和Capacity属性  

         
Count属性是目前ArrayList包含的元素的数量,这个属性是只读的。  

 
Capacity属性是目前ArrayList能够包含的最大数量,可以手动的设置这个属性,但是当设置为小于Count值的时候会引发一个异常。  

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: