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$ .

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

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