Прочитать на английском

Поделиться через


ArrayList.InsertRange(Int32, ICollection) Метод

Определение

Вставляет элементы коллекции в список ArrayList в позиции с указанным индексом.

public virtual void InsertRange (int index, System.Collections.ICollection c);

Параметры

index
Int32

Отсчитываемый от нуля индекс места вставки новых элементов.

c
ICollection

Коллекция ICollection, элементы которой требуется вставить в список ArrayList. Сама коллекция не может иметь значение null, но может содержать элементы со значением null.

Исключения

c имеет значение null.

Значение параметра index меньше нуля.

-или-

Значение index больше значения Count.

Объект ArrayList доступен только для чтения.

-или-

ArrayList имеет фиксированный размер.

Примеры

В следующем примере кода показано, как вставить элементы в ArrayList.

using System;
using System.Collections;
public class SamplesArrayList  {

   public static void Main()  {

      // Creates and initializes a new ArrayList using Insert instead of Add.
      ArrayList myAL = new 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 = new 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: " + myException.ToString());
      }
   }

   public static void PrintValues( IEnumerable myList )  {
      foreach ( Object obj in myList )
         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(int index, Object value)
   at SamplesArrayList.Main()
*/

Комментарии

ArrayList null принимает в качестве допустимого значения и разрешает дублировать элементы.

Если новый Count (текущий Count плюс размер коллекции) будет больше Capacity, емкость увеличивается путем автоматического ArrayList перераспределения внутреннего массива для размещения новых элементов, а существующие элементы копируются в новый массив перед добавлением новых элементов.

Если index равно Count, элементы добавляются в конец ArrayList.

Порядок элементов в ICollection сохраняется в ArrayList.

В коллекциях с непрерывным набором элементов, таких как списки, чтобы выделить место новому элементу, следующие за точкой вставки элементы перемещаются вниз. Если коллекция индексируется, индексы перемещенных элементов также обновляются. Такое поведение не реализуется в коллекциях, в которых элементы логически сгруппированы, например в хэш-таблицах.

Этот метод является операцией O(n + m) , где n — количество добавляемых элементов, а mCount.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

См. также раздел