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

Определение

Копирует диапазон элементов из массива Array, начиная с заданного индекса источника, и вставляет его в другой массив Array, начиная с заданного индекса назначения.Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. Гарантирует, что в случае невозможности успешно скопировать весь диапазон, все изменения будут отменены.Guarantees that all changes are undone if the copy does not succeed completely.

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, содержащий данные, которые требуется скопировать.The Array that contains the data to copy.

sourceIndex
Int32

32-разрядное целое число, представляющее индекс в массиве sourceArray, с которого начинается копирование.A 32-bit integer that represents the index in the sourceArray at which copying begins.

destinationArray
Array

Массив Array, принимающий данные.The Array that receives the data.

destinationIndex
Int32

32-разрядное целое число, представляющее индекс в массиве destinationArray, с которого начинается сохранение.A 32-bit integer that represents the index in the destinationArray at which storing begins.

length
Int32

32-битовое целое число, представляющее число копируемых элементов.A 32-bit integer that represents the number of elements to copy.

Исключения

Свойство sourceArray имеет значение null.sourceArray is null.

- или --or- Свойство destinationArray имеет значение null.destinationArray is null.

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

Тип sourceArray не совпадает с типом destinationArray и не является производным от него.The sourceArray type is neither the same as nor derived from the destinationArray type.

По меньшей мере один элемент в sourceArray не может быть приведен к типу destinationArray.At least one element in sourceArray cannot be cast to the type of destinationArray.

sourceIndex меньше, чем нижняя граница первого измерения массива sourceArray.sourceIndex is less than the lower bound of the first dimension of sourceArray.

- или --or- destinationIndex меньше, чем нижняя граница первого измерения массива destinationArray.destinationIndex is less than the lower bound of the first dimension of destinationArray.

- или --or- Значение параметра length меньше нуля.length is less than zero.

length больше числа элементов с sourceIndex до конца sourceArray.length is greater than the number of elements from sourceIndex to the end of sourceArray.

- или --or- length больше числа элементов с destinationIndex до конца destinationArray.length is greater than the number of elements from destinationIndex to the end of destinationArray.

Комментарии

Параметры sourceArray и destinationArray должны иметь одинаковое число измерений.The sourceArray and destinationArray parameters must have the same number of dimensions. Тип sourceArray должен быть таким же, как или производный от типа destinationArray; в противном случае создается ArrayTypeMismatchException.The sourceArray type must be the same as or derived from the destinationArray type; otherwise, an ArrayTypeMismatchException is thrown. В отличие от CopyConstrainedCopy проверяет совместимость типов массивов перед выполнением любой операции.Unlike Copy, ConstrainedCopy verifies the compatibility of the array types before performing any operation.

При копировании между многомерными массивами массив ведет себя подобно длинному одномерному массиву, где строки (или столбцы) концептуально располагаются сквозно.When copying between multidimensional arrays, the array behaves like a long one-dimensional array, where the rows (or columns) are conceptually laid end-to-end. Например, если массив содержит три строки (или столбца) с четырьмя элементами, то при копировании шести элементов из начала массива будут скопированы все четыре элемента первой строки (или столбца) и первые два элемента второй строки (или столбца).For example, if an array has three rows (or columns) with four elements each, copying six elements from the beginning of the array would copy all four elements of the first row (or column) and the first two elements of the second row (or column). Чтобы начать копирование со второго элемента третьей строки (или столбца), sourceIndex должен быть верхней границей первой строки (или столбца) и длиной второй строки (или столбца) плюс два.To start copying from the second element of the third row (or column), sourceIndex must be the upper bound of the first row (or column) plus the length of the second row (or column) plus two.

Если sourceArray и destinationArray перекрываются, этот метод ведет себя так, как будто исходные значения sourceArray были сохранены во временном расположении перед перезазаписью destinationArray.If sourceArray and destinationArray overlap, this method behaves as if the original values of sourceArray were preserved in a temporary location before destinationArray is overwritten.

[C++][C++]

Этот метод эквивалентен стандарту memmoveC/C++ Function, но не memcpy.This method is equivalent to the standard C/C++ function memmove, not memcpy.

Массивы могут быть массивами ссылочного типа или массивами значений.The arrays can be reference-type arrays or value-type arrays. Если sourceArray и destinationArray являются массивами ссылочного типа или оба массива типа Object, выполняется неполная копия.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Неполная копия Array — это новый Array, содержащий ссылки на те же элементы, что и исходный Array.A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Сами элементы или все, на которые ссылаются элементы, не копируются.The elements themselves or anything referenced by the elements are not copied. В отличие от этого, глубокая копия Array копирует элементы и все, на которые прямо или косвенно ссылаются элементы.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

Если этот метод вызывает исключение при копировании, destinationArray остается без изменений; Таким образом, ConstrainedCopy можно использовать в области ограниченного выполнения (Cer).If this method throws an exception while copying, the destinationArray remains unchanged; therefore, ConstrainedCopy can be used within a constrained execution region (Cer).

Этот метод является операцией O (n), где n length.This method is an O(n) operation, where n is length.

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

Дополнительно