Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Метод

Определение

Копирует диапазон элементов из массива Array, начиная с заданного индекса источника, и вставляет его в другой массив Array, начиная с заданного индекса назначения. Гарантирует, что в случае невозможности успешно скопировать весь диапазон, все изменения будут отменены.

public:
 static void ConstrainedCopy(Array ^ sourceArray, int sourceIndex, Array ^ destinationArray, int destinationIndex, int length);
public static void ConstrainedCopy (Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
static member ConstrainedCopy : Array * int * Array * int * int -> unit
Public Shared Sub ConstrainedCopy (sourceArray As Array, sourceIndex As Integer, destinationArray As Array, destinationIndex As Integer, length As Integer)

Параметры

sourceArray
Array

Массив Array, содержащий данные, которые требуется скопировать.

sourceIndex
Int32

32-разрядное целое число, представляющее индекс в массиве sourceArray, с которого начинается копирование.

destinationArray
Array

Массив Array, принимающий данные.

destinationIndex
Int32

32-разрядное целое число, представляющее индекс в массиве destinationArray, с которого начинается сохранение.

length
Int32

32-битовое целое число, представляющее число копируемых элементов.

Исключения

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

-или-

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

sourceArray и destinationArray имеют различные ранги.

Тип sourceArray не совпадает с типом destinationArray и не является производным от него.

По меньшей мере один элемент в sourceArray не может быть приведен к типу destinationArray.

sourceIndex меньше, чем нижняя граница первого измерения массива sourceArray.

-или-

destinationIndex меньше, чем нижняя граница первого измерения массива destinationArray.

-или-

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

length больше числа элементов с sourceIndex до конца sourceArray.

-или-

length больше числа элементов с destinationIndex до конца destinationArray.

Комментарии

Значения sourceArray и destinationArray параметры должны иметь одинаковое количество измерений. Тип sourceArray должен совпадать с типом или производным от destinationArray него; в противном случае ArrayTypeMismatchException создается исключение. В отличие от Copyэтого, ConstrainedCopy проверяет совместимость типов массивов перед выполнением любой операции.

При копировании между многомерными массивами массив ведет себя как длинный одномерный массив, где строки (или столбцы) концептуально размещаются в конце. Например, если массив содержит три строки (или столбцы) с четырьмя элементами, копирование шести элементов из начала массива приведет к копированию всех четырех элементов первой строки (или столбца) и первых двух элементов второй строки (или столбца). Чтобы начать копирование из второго элемента третьей строки (или столбца), sourceIndex должна быть верхняя граница первой строки (или столбца) плюс длина второй строки (или столбца) плюс две.

Если sourceArray и destinationArray перекрываются, этот метод ведет себя так, как если бы исходные значения sourceArray сохранялись во временном расположении до destinationArray перезаписи.

[C++]

Этот метод эквивалентен стандартной функции memmoveC/C++, а не memcpy.

Массивы могут быть массивами ссылочных типов или массивами типов значений. Если sourceArray и destinationArray оба массива ссылочного типа или оба массива типа Object, выполняется неглубокая копия. Неглубокая копия объекта Array является новой Array , содержащей ссылки на те же элементы, что и исходный Array. Сами элементы или все элементы, на которые ссылается элементы, не копируются. В отличие от этого, глубокая копия Array элементов копирует элементы и все прямо или косвенно на которые ссылаются элементы.

Если этот метод создает исключение во время копирования, он destinationArray остается неизменным, поэтому ConstrainedCopy его можно использовать в области ограниченного выполнения (Cer).

Этот метод представляет собой операцию O(n), где n находится length.

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

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