Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Method

Definição

Copia um intervalo de elementos de um Array a partir do índice de origem especificado e cola-os em outro Array a partir do índice de destino especificado.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. Garante que todas as alterações serão desfeitas se a cópia não foi bem-sucedida por completo.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)

Parâmetros

sourceArray
Array Array Array Array

O Array que contém os dados a serem copiados.The Array that contains the data to copy.

sourceIndex
Int32 Int32 Int32 Int32

Um inteiro de 32 bits que representa o índice no sourceArray no qual a cópia é iniciada.A 32-bit integer that represents the index in the sourceArray at which copying begins.

destinationArray
Array Array Array Array

O Array que recebe os dados.The Array that receives the data.

destinationIndex
Int32 Int32 Int32 Int32

Um inteiro de 32 bits que representa o índice no destinationArray no qual o armazenamento é iniciado.A 32-bit integer that represents the index in the destinationArray at which storing begins.

length
Int32 Int32 Int32 Int32

Um inteiro de 32 bits que representa o número de elementos a se copiar.A 32-bit integer that represents the number of elements to copy.

Exceções

sourceArray é null.sourceArray is null.

- ou --or- destinationArray é null.destinationArray is null.

sourceArray e destinationArray têm classificações diferentes.sourceArray and destinationArray have different ranks.

O tipo sourceArray não é igual nem derivado do tipo destinationArray.The sourceArray type is neither the same as nor derived from the destinationArray type.

Pelo menos um elemento em sourceArray não pode ser convertido no tipo de destinationArray.At least one element in sourceArray cannot be cast to the type of destinationArray.

sourceIndex é menor que o limite inferior da primeira dimensão de sourceArray.sourceIndex is less than the lower bound of the first dimension of sourceArray.

- ou --or- destinationIndex é menor que o limite inferior da primeira dimensão de destinationArray.destinationIndex is less than the lower bound of the first dimension of destinationArray.

- ou --or- length é menor que zero.length is less than zero.

length é maior que o número de elementos do sourceIndex até o final do sourceArray.length is greater than the number of elements from sourceIndex to the end of sourceArray.

- ou --or- length é maior que o número de elementos do destinationIndex até o final do destinationArray.length is greater than the number of elements from destinationIndex to the end of destinationArray.

Comentários

Os parâmetros sourceArray e destinationArray devem ter o mesmo número de dimensões.The sourceArray and destinationArray parameters must have the same number of dimensions. O sourceArray tipo deve ser igual ou derivada do destinationArray de tipo; caso contrário, um ArrayTypeMismatchException é gerada.The sourceArray type must be the same as or derived from the destinationArray type; otherwise, an ArrayTypeMismatchException is thrown. Diferentemente Copy, ConstrainedCopy verifica a compatibilidade dos tipos de matriz antes de executar qualquer operação.Unlike Copy, ConstrainedCopy verifies the compatibility of the array types before performing any operation.

Ao copiar entre matrizes multidimensionais, a matriz se comporta como uma matriz unidimensional longa, em que as linhas (ou colunas) são conceitualmente apresentadas ponta a ponta.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. Por exemplo, se uma matriz tivesse três linhas (ou colunas) com quatro elementos cada, a cópia de seis elementos do início da matriz copiaria todos os quatro elementos da primeira linha (ou coluna) e os dois primeiros elementos da segunda linha (ou coluna).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). Para começar a copiar o segundo elemento da terceira linha (ou coluna), sourceIndex deve ser o limite superior da primeira linha (ou coluna) mais o tamanho da segunda linha (ou coluna) mais dois.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.

Caso sourceArray e destinationArray se sobreponham, este método se comporta como se os valores originais de sourceArray foram preservados em um local temporário antes de destinationArray ser substituído.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++]

Este método é equivalente à função padrão do C/C++ memmove, e não a memcpy.This method is equivalent to the standard C/C++ function memmove, not memcpy.

As matrizes podem ser matrizes do tipo referência ou matrizes do tipo valor.The arrays can be reference-type arrays or value-type arrays. Caso sourceArray e destinationArray sejam matrizes do tipo de referência ou ambas as matrizes do tipo Object, uma cópia superficial é realizada.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Uma cópia superficial de um Array é um novo Array contendo referências aos mesmos elementos do Arrayoriginal.A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Os próprios elementos ou nada referenciado pelos elementos não são copiados.The elements themselves or anything referenced by the elements are not copied. Por outro lado, uma cópia em profundidade de um Array copia os elementos e tudo direta ou indiretamente referenciado pelos elementos.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

Se esse método lançará uma exceção durante a cópia, o destinationArray permanece inalterado; portanto, ConstrainedCopy pode ser usado dentro de uma região de execução restrita (Cer).If this method throws an exception while copying, the destinationArray remains unchanged; therefore, ConstrainedCopy can be used within a constrained execution region (Cer).

Este método é uma operação O(n), em que n é length.This method is an O(n) operation, where n is length.

Aplica-se a

Veja também