Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
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)
Параметры
- sourceIndex
- Int32
32-разрядное целое число, представляющее индекс, с sourceArray которого начинается копирование.
- destinationIndex
- Int32
32-разрядное целое число, представляющее индекс, с destinationArray которого начинается хранение.
- length
- Int32
32-разрядное целое число, представляющее количество элементов для копирования.
Исключения
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$ .