ArrayList Class
 

Implements the IList interface using an array whose size is dynamically increased as required.

To browse the .NET Framework source code for this type, see the Reference Source.

Namespace:   System.Collections
Assembly:  mscorlib (in mscorlib.dll)


Syntax
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class ArrayList : IList, ICollection, IEnumerable, ICloneable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class ArrayList : IList, ICollection, IEnumerable, 
	ICloneable
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type ArrayList = 
    class
        interface IList
        interface ICollection
        interface IEnumerable
        interface ICloneable
    end
<SerializableAttribute>
<ComVisibleAttribute(True)>
Public Class ArrayList
	Implements IList, ICollection, IEnumerable, ICloneable
Constructors
NameDescription
System_CAPS_pubmethod ArrayList

Initializes a new instance of the ArrayList class that is empty and has the default initial capacity.

System_CAPS_pubmethod ArrayList

Initializes a new instance of the ArrayList class that contains elements copied from the specified collection and that has the same initial capacity as the number of elements copied.

System_CAPS_pubmethod ArrayList

Initializes a new instance of the ArrayList class that is empty and has the specified initial capacity.

Properties
NameDescription
System_CAPS_pubproperty

Gets or sets the number of elements that the ArrayList can contain.

System_CAPS_pubproperty

Gets the number of elements actually contained in the ArrayList.

System_CAPS_pubproperty

Gets a value indicating whether the ArrayList has a fixed size.

System_CAPS_pubproperty

Gets a value indicating whether the ArrayList is read-only.

System_CAPS_pubproperty

Gets a value indicating whether access to the ArrayList is synchronized (thread safe).

System_CAPS_pubproperty

Gets or sets the element at the specified index.

System_CAPS_pubproperty

Gets an object that can be used to synchronize access to the ArrayList.

Methods
NameDescription
System_CAPS_pubmethod System_CAPS_static Adapter

Creates an ArrayList wrapper for a specific IList.

System_CAPS_pubmethod Add

Adds an object to the end of the ArrayList.

System_CAPS_pubmethod AddRange

Adds the elements of an ICollection to the end of the ArrayList.

System_CAPS_pubmethod BinarySearch

Searches a range of elements in the sorted ArrayList for an element using the specified comparer and returns the zero-based index of the element.

System_CAPS_pubmethod BinarySearch

Searches the entire sorted ArrayList for an element using the default comparer and returns the zero-based index of the element.

System_CAPS_pubmethod BinarySearch

Searches the entire sorted ArrayList for an element using the specified comparer and returns the zero-based index of the element.

System_CAPS_pubmethod Clear

Removes all elements from the ArrayList.

System_CAPS_pubmethod Clone

Creates a shallow copy of the ArrayList.

System_CAPS_pubmethod Contains

Determines whether an element is in the ArrayList.

System_CAPS_pubmethod CopyTo

Copies the entire ArrayList to a compatible one-dimensional Array, starting at the beginning of the target array.

System_CAPS_pubmethod CopyTo

Copies the entire ArrayList to a compatible one-dimensional Array, starting at the specified index of the target array.

System_CAPS_pubmethod CopyTo

Copies a range of elements from the ArrayList to a compatible one-dimensional Array, starting at the specified index of the target array.

System_CAPS_pubmethod Equals

Determines whether the specified object is equal to the current object.(Inherited from Object.)

System_CAPS_protmethod Finalize

Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.)

System_CAPS_pubmethod System_CAPS_static FixedSize

Returns an ArrayList wrapper with a fixed size.

System_CAPS_pubmethod System_CAPS_static FixedSize

Returns an IList wrapper with a fixed size.

System_CAPS_pubmethod GetEnumerator

Returns an enumerator for the entire ArrayList.

System_CAPS_pubmethod GetEnumerator

Returns an enumerator for a range of elements in the ArrayList.

System_CAPS_pubmethod GetHashCode

Serves as the default hash function. (Inherited from Object.)

System_CAPS_pubmethod GetRange

Returns an ArrayList which represents a subset of the elements in the source ArrayList.

System_CAPS_pubmethod GetType

Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_pubmethod IndexOf

Searches for the specified Object and returns the zero-based index of the first occurrence within the entire ArrayList.

System_CAPS_pubmethod IndexOf

Searches for the specified Object and returns the zero-based index of the first occurrence within the range of elements in the ArrayList that extends from the specified index to the last element.

System_CAPS_pubmethod IndexOf

Searches for the specified Object and returns the zero-based index of the first occurrence within the range of elements in the ArrayList that starts at the specified index and contains the specified number of elements.

System_CAPS_pubmethod Insert

Inserts an element into the ArrayList at the specified index.

System_CAPS_pubmethod InsertRange

Inserts the elements of a collection into the ArrayList at the specified index.

System_CAPS_pubmethod LastIndexOf

Searches for the specified Object and returns the zero-based index of the last occurrence within the entire ArrayList.

System_CAPS_pubmethod LastIndexOf

Searches for the specified Object and returns the zero-based index of the last occurrence within the range of elements in the ArrayList that extends from the first element to the specified index.

System_CAPS_pubmethod LastIndexOf

Searches for the specified Object and returns the zero-based index of the last occurrence within the range of elements in the ArrayList that contains the specified number of elements and ends at the specified index.

System_CAPS_protmethod MemberwiseClone

Creates a shallow copy of the current Object.(Inherited from Object.)

System_CAPS_pubmethod System_CAPS_static ReadOnly

Returns a read-only ArrayList wrapper.

System_CAPS_pubmethod System_CAPS_static ReadOnly

Returns a read-only IList wrapper.

System_CAPS_pubmethod Remove

Removes the first occurrence of a specific object from the ArrayList.

System_CAPS_pubmethod RemoveAt

Removes the element at the specified index of the ArrayList.

System_CAPS_pubmethod RemoveRange

Removes a range of elements from the ArrayList.

System_CAPS_pubmethod System_CAPS_static Repeat

Returns an ArrayList whose elements are copies of the specified value.

System_CAPS_pubmethod Reverse

Reverses the order of the elements in the entire ArrayList.

System_CAPS_pubmethod Reverse

Reverses the order of the elements in the specified range.

System_CAPS_pubmethod SetRange

Copies the elements of a collection over a range of elements in the ArrayList.

System_CAPS_pubmethod Sort

Sorts the elements in the entire ArrayList.

System_CAPS_pubmethod Sort

Sorts the elements in the entire ArrayList using the specified comparer.

System_CAPS_pubmethod Sort

Sorts the elements in a range of elements in ArrayList using the specified comparer.

System_CAPS_pubmethod System_CAPS_static Synchronized

Returns an ArrayList wrapper that is synchronized (thread safe).

System_CAPS_pubmethod System_CAPS_static Synchronized

Returns an IList wrapper that is synchronized (thread safe).

System_CAPS_pubmethod ToArray

Copies the elements of the ArrayList to a new Object array.

System_CAPS_pubmethod ToArray

Copies the elements of the ArrayList to a new array of the specified element type.

System_CAPS_pubmethod ToString

Returns a string that represents the current object.(Inherited from Object.)

System_CAPS_pubmethod TrimToSize

Sets the capacity to the actual number of elements in the ArrayList.

Extension Methods
NameDescription
System_CAPS_pubmethod AsParallel

Overloaded. Enables parallelization of a query.(Defined by ParallelEnumerable.)

System_CAPS_pubmethod AsQueryable

Overloaded. Converts an IEnumerable to an IQueryable.(Defined by Queryable.)

System_CAPS_pubmethod Cast

Casts the elements of an IEnumerable to the specified type.(Defined by Enumerable.)

System_CAPS_pubmethod OfType

Filters the elements of an IEnumerable based on a specified type.(Defined by Enumerable.)

Remarks
System_CAPS_noteNote

To view the .NET Framework source code for this type, see the Reference Source. You can browse through the source code online, download the reference for offline viewing, and step through the sources (including patches and updates) during debugging; see instructions.

The ArrayList class is designed to hold heterogeneous collections of objects. However, it does not always offer the best performance. Instead, we recommend the following:

  • For a heterogeneous collection of objects, use the List<Object> (in C#) or List(Of Object) (in Visual Basic) type.

  • For a homogeneous collection of objects, use the List class.

See the "Performance Considerations" section in the List reference topic for a discussion of the relative performance of these classes.

The ArrayList is not guaranteed to be sorted. You must sort the ArrayList by calling its Sort method prior to performing operations (such as BinarySearch) that require the ArrayList to be sorted. To maintain a collection that is automatically sorted as new elements are added, you can use the SortedSet class.

The capacity of an ArrayList is the number of elements the ArrayList can hold. As elements are added to an ArrayList, the capacity is automatically increased as required through reallocation. The capacity can be decreased by calling TrimToSize or by setting the property explicitly.

For very large ArrayList objects, you can increase the maximum capacity to 2 billion elements on a 64-bit system by setting the enabled attribute of the configuration element to true in the run-time environment.

Elements in this collection can be accessed using an integer index. Indexes in this collection are zero-based.

The ArrayList collection accepts null as a valid value. It also allows duplicate elements.

Using multidimensional arrays as elements in an ArrayList collection is not supported.

Examples

The following code example shows how to create and initialize an ArrayList and how to display its values.

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
Imports System.Collections
Imports Microsoft.VisualBasic

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 'PrintValues

End Class


' This code produces output similar to the following:
' 
' myAL
'     Count:    3
'     Capacity: 4
'     Values:   Hello   World   !
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   !

*/
Version Information
Universal Windows Platform
Available since 10
.NET Framework
Available since 1.1
Thread Safety

Public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

An ArrayList can support multiple readers concurrently, as long as the collection is not modified. To guarantee the thread safety of the ArrayList, all operations must be done through the wrapper returned by the Synchronized method.

Enumerating through a collection is intrinsically not a thread-safe procedure. Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.

Return to top