ArrayList 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
使用會視需要動態增加大小的數位,實作 IList 介面。
public ref class ArrayList : System::Collections::IList
public ref class ArrayList : ICloneable, System::Collections::IList
public class ArrayList : System.Collections.IList
public class ArrayList : ICloneable, System.Collections.IList
[System.Serializable]
public class ArrayList : ICloneable, System.Collections.IList
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ArrayList : ICloneable, System.Collections.IList
type ArrayList = class
interface IEnumerable
interface IList
interface ICollection
type ArrayList = class
interface ICollection
interface IEnumerable
interface IList
interface ICloneable
type ArrayList = class
interface IEnumerable
interface IList
interface ICollection
interface ICloneable
[<System.Serializable>]
type ArrayList = class
interface IList
interface ICollection
interface IEnumerable
interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ArrayList = class
interface IList
interface ICollection
interface IEnumerable
interface ICloneable
Public Class ArrayList
Implements IList
Public Class ArrayList
Implements ICloneable, IList
- 繼承
-
ArrayList
- 衍生
- 屬性
- 實作
範例
下列範例示範如何建立和初始化 ArrayList,以及如何顯示其值。
using namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myList );
int main()
{
// Creates and initializes a new ArrayList.
ArrayList^ myAL = gcnew ArrayList;
myAL->Add( "Hello" );
myAL->Add( "World" );
myAL->Add( "!" );
// Displays the properties and values of the ArrayList.
Console::WriteLine( "myAL" );
Console::WriteLine( " Count: {0}", myAL->Count );
Console::WriteLine( " Capacity: {0}", myAL->Capacity );
Console::Write( " Values:" );
PrintValues( myAL );
}
void PrintValues( IEnumerable^ myList )
{
IEnumerator^ myEnum = myList->GetEnumerator();
while ( myEnum->MoveNext() )
{
Object^ obj = safe_cast<Object^>(myEnum->Current);
Console::Write( " {0}", obj );
}
Console::WriteLine();
}
/*
This code produces output similar to the following:
myAL
Count: 3
Capacity: 4
Values: Hello World !
*/
using System;
using System.Collections;
public class SamplesArrayList {
public static void Main() {
// Creates and initializes a new ArrayList.
ArrayList myAL = new ArrayList();
myAL.Add("Hello");
myAL.Add("World");
myAL.Add("!");
// Displays the properties and values of the ArrayList.
Console.WriteLine( "myAL" );
Console.WriteLine( " Count: {0}", myAL.Count );
Console.WriteLine( " Capacity: {0}", myAL.Capacity );
Console.Write( " Values:" );
PrintValues( myAL );
}
public static void PrintValues( IEnumerable myList ) {
foreach ( Object obj in myList )
Console.Write( " {0}", obj );
Console.WriteLine();
}
}
/*
This code produces output similar to the following:
myAL
Count: 3
Capacity: 4
Values: Hello World !
*/
Imports System.Collections
Public Class SamplesArrayList
Public Shared Sub Main()
' Creates and initializes a new ArrayList.
Dim myAL As New ArrayList()
myAL.Add("Hello")
myAL.Add("World")
myAL.Add("!")
' Displays the properties and values of the ArrayList.
Console.WriteLine("myAL")
Console.WriteLine(" Count: {0}", myAL.Count)
Console.WriteLine(" Capacity: {0}", myAL.Capacity)
Console.Write(" Values:")
PrintValues(myAL)
End Sub
Public Shared Sub PrintValues(myList As IEnumerable)
Dim obj As [Object]
For Each obj In myList
Console.Write(" {0}", obj)
Next obj
Console.WriteLine()
End Sub
End Class
' This code produces output similar to the following:
'
' myAL
' Count: 3
' Capacity: 4
' Values: Hello World !
備註
重要
不建議您將 ArrayList
類別用於新的開發。 相反地,我們建議您使用泛型 List<T> 類別。
ArrayList 類別的設計目的是要保存物件的異質集合。 不過,它不一定會提供最佳效能。 相反地,我們建議使用下列專案:
不保證排序 ArrayList。 您必須先呼叫 Sort 方法來排序 ArrayList,才能執行需要排序 ArrayList 的作業(例如 BinarySearch)。 若要維護自動排序為加入新元素的集合,您可以使用 SortedSet<T> 類別。
ArrayList 的容量是 ArrayList 可以保存的項目數目。 隨著元素新增至 ArrayList,透過重新配置自動增加容量。 呼叫 TrimToSize 或明確設定 Capacity 屬性,即可減少容量。
僅限 .NET Framework : 對於非常大的 ArrayList 物件,您可以將運行時間環境中 <gcAllowVeryLargeObjects>
組態 true
專案的 enabled
屬性,將 64 位系統上的最大容量增加到 20 億個元素。
這個集合中的元素可以使用整數索引來存取。 此集合中的索引是以零起始。
ArrayList 集合接受 null
作為有效值。 它也允許重複的專案。
不支援使用多維度陣列作為 ArrayList 集合中的專案。
建構函式
ArrayList() |
初始化空的 ArrayList 類別的新實例,並具有預設的初始容量。 |
ArrayList(ICollection) |
初始化 ArrayList 類別的新實例,這個實例包含從指定的集合複製的專案,且其初始容量與複製的項目數目相同。 |
ArrayList(Int32) |
初始化 ArrayList 類別的新實例,這個實例是空的,而且具有指定的初始容量。 |
屬性
Capacity |
取得或設定 ArrayList 可以包含的項目數目。 |
Count |
取得實際包含在 ArrayList中的項目數目。 |
IsFixedSize |
取得值,指出 ArrayList 是否有固定大小。 |
IsReadOnly |
取得值,指出 ArrayList 是否為唯讀。 |
IsSynchronized |
取得值,指出是否同步存取 ArrayList (線程安全)。 |
Item[Int32] |
取得或設定位於指定索引處的專案。 |
SyncRoot |
取得對象,這個物件可用來同步存取 ArrayList。 |
方法
擴充方法
Cast<TResult>(IEnumerable) |
將 IEnumerable 的項目轉換成指定的型別。 |
OfType<TResult>(IEnumerable) |
根據指定的型別篩選 IEnumerable 的專案。 |
AsParallel(IEnumerable) |
啟用查詢的平行處理。 |
AsQueryable(IEnumerable) |
將 IEnumerable 轉換成 IQueryable。 |
適用於
執行緒安全性
此類型的公用靜態 (Shared
) 成員是安全線程。 不保證任何實例成員都是安全線程。
只要集合未修改,ArrayList 就可以同時支援多個讀取器。 若要保證 ArrayList的線程安全性,所有作業都必須透過 Synchronized(IList) 方法傳回的包裝函式來完成。
透過集合列舉本質上不是安全線程的程式。 即使集合同步處理,其他線程仍然可以修改集合,這會導致列舉值擲回例外狀況。 若要保證列舉期間的線程安全性,您可以在整個列舉期間鎖定集合,或攔截其他線程所做的變更所產生的例外狀況。