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++]
Этот метод эквивалентен стандартной функции memmove
C/C++, а не memcpy
.
Массивы могут быть массивами ссылочных типов или массивами типов значений. Если sourceArray
и destinationArray
оба массива ссылочного типа или оба массива типа Object, выполняется неглубокая копия. Неглубокая копия объекта Array является новой Array , содержащей ссылки на те же элементы, что и исходный Array. Сами элементы или все элементы, на которые ссылается элементы, не копируются. В отличие от этого, глубокая копия Array элементов копирует элементы и все прямо или косвенно на которые ссылаются элементы.
Если этот метод создает исключение во время копирования, он destinationArray
остается неизменным, поэтому ConstrainedCopy его можно использовать в области ограниченного выполнения (Cer).
Этот метод представляет собой операцию O(n
), где n
находится length
.