程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> ArrayList的使用方法

ArrayList的使用方法

編輯:C#入門知識

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最常用的用法

3ArrayList重要的方法和屬性
(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關鍵字來保證線程同步。 **** 但是,使用這個方法(ArrayList.Synchronized)並不能保證枚舉的同步,例如,一個線程正在刪除或添加集合項,而另一個線程同時進行枚舉,這時

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved