ArrayList::InsertRange Method
Inserts the elements of a collection into the ArrayList at the specified index.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- index
- Type: System::Int32
The zero-based index at which the new elements should be inserted.
- c
- Type: System.Collections::ICollection
The ICollection whose elements should be inserted into the ArrayList. The collection itself cannot be nullptr, but it can contain elements that are nullptr.
| Exception | Condition |
|---|---|
| ArgumentNullException | c is nullptr. |
| ArgumentOutOfRangeException | index is less than zero. -or- index is greater than Count. |
| NotSupportedException | The ArrayList is read-only. -or- The ArrayList has a fixed size. |
ArrayList accepts nullptr as a valid value and allows duplicate elements.
If the new Count (the current Count plus the size of the collection) will be greater than Capacity, the capacity of the ArrayList is increased by automatically reallocating the internal array to accommodate the new elements, and the existing elements are copied to the new array before the new elements are added.
If index is equal to Count, the elements are added to the end of ArrayList.
The order of the elements in the ICollection is preserved in the ArrayList.
In collections of contiguous elements, such as lists, the elements that follow the insertion point move down to accommodate the new element. If the collection is indexed, the indexes of the elements that are moved are also updated. This behavior does not apply to collections where elements are conceptually grouped into buckets, such as a hash table.
This method is an O(n + m) operation, where n is the number of elements to be added and m is Count.
The following code example shows how to insert elements into the ArrayList.
using namespace System; using namespace System::Collections; void PrintValues( IEnumerable^ myList ); int main() { // Creates and initializes a new ArrayList using Insert instead of Add. ArrayList^ myAL = gcnew ArrayList; myAL->Insert( 0, "The" ); myAL->Insert( 1, "fox" ); myAL->Insert( 2, "jumps" ); myAL->Insert( 3, "over" ); myAL->Insert( 4, "the" ); myAL->Insert( 5, "dog" ); // Creates and initializes a new Queue. Queue^ myQueue = gcnew Queue; myQueue->Enqueue( "quick" ); myQueue->Enqueue( "brown" ); // Displays the ArrayList and the Queue. Console::WriteLine( "The ArrayList initially contains the following:" ); PrintValues( myAL ); Console::WriteLine( "The Queue initially contains the following:" ); PrintValues( myQueue ); // Copies the Queue elements to the ArrayList at index 1. myAL->InsertRange( 1, myQueue ); // Displays the ArrayList. Console::WriteLine( "After adding the Queue, the ArrayList now contains:" ); PrintValues( myAL ); // Search for "dog" and add "lazy" before it. myAL->Insert( myAL->IndexOf( "dog" ), "lazy" ); // Displays the ArrayList. Console::WriteLine( "After adding \"lazy\", the ArrayList now contains:" ); PrintValues( myAL ); // Add "!!!" at the end. myAL->Insert( myAL->Count, "!!!" ); // Displays the ArrayList. Console::WriteLine( "After adding \"!!!\", the ArrayList now contains:" ); PrintValues( myAL ); // Inserting an element beyond Count throws an exception. try { myAL->Insert( myAL->Count + 1, "anystring" ); } catch ( Exception^ myException ) { Console::WriteLine( "Exception: {0}", myException ); } } 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 the following output. The ArrayList initially contains the following: The fox jumps over the dog The Queue initially contains the following: quick brown After adding the Queue, the ArrayList now contains: The quick brown fox jumps over the dog After adding "lazy", the ArrayList now contains: The quick brown fox jumps over the lazy dog After adding "!!!", the ArrayList now contains: The quick brown fox jumps over the lazy dog !!! Exception: System.ArgumentOutOfRangeException: Insertion index was out of range. Must be non-negative and less than or equal to size. Parameter name: index at System.Collections.ArrayList.Insert(Int32 index, Object value) at SamplesArrayList.Main() */
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.