Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Método

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. Garante que todas as alterações serão desfeitas se a cópia não foi bem-sucedida por completo.

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

O Array que contém os dados a serem copiados.

sourceIndex
Int32

Um inteiro de 32 bits que representa o índice no sourceArray no qual a cópia é iniciada.

destinationArray
Array

O Array que recebe os dados.

destinationIndex
Int32

Um inteiro de 32 bits que representa o índice no destinationArray no qual o armazenamento é iniciado.

length
Int32

Um inteiro de 32 bits que representa o número de elementos a se copiar.

Exceções

sourceArray é null.

- ou -

destinationArray é null.

sourceArray e destinationArray têm classificações diferentes.

O tipo sourceArray não é igual nem derivado do tipo destinationArray.

Pelo menos um elemento em sourceArray não pode ser convertido no tipo de destinationArray.

sourceIndex é menor que o limite inferior da primeira dimensão de sourceArray.

- ou -

destinationIndex é menor que o limite inferior da primeira dimensão de destinationArray.

- ou -

length é menor que zero.

length é maior que o número de elementos do sourceIndex até o final do sourceArray.

- ou -

length é maior que o número de elementos do destinationIndex até o final do destinationArray.

Comentários

Os parâmetros sourceArray e destinationArray devem ter o mesmo número de dimensões. O sourceArray tipo deve ser igual ou derivado do destinationArray tipo; caso contrário, um ArrayTypeMismatchException é gerado. Ao contrário Copy, ConstrainedCopy verifica a compatibilidade dos tipos de matriz antes de executar qualquer operação.

Ao copiar entre matrizes multidimensionais, a matriz se comporta como uma matriz unidimensional longa, em que as linhas (ou colunas) são conceitualmente colocadas de ponta a ponta. 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). Para começar a copiar do segundo elemento da terceira linha (ou coluna), sourceIndex deve ser o limite superior da primeira linha (ou coluna) mais o comprimento da segunda linha (ou coluna) mais duas.

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.

[C++]

Este método é equivalente à função padrão do C/C++ memmove, e não a memcpy.

As matrizes podem ser matrizes do tipo referência ou matrizes do tipo valor. Caso sourceArray e destinationArray sejam matrizes do tipo de referência ou ambas as matrizes do tipo Object, uma cópia superficial é realizada. Uma cópia superficial de um Array é um novo Array contendo referências aos mesmos elementos do Arrayoriginal. Os próprios elementos ou nada referenciado pelos elementos não são copiados. Por outro lado, uma cópia em profundidade de um Array copia os elementos e tudo direta ou indiretamente referenciado pelos elementos.

Se esse método gerar uma exceção durante a cópia, o destinationArray restante permanecerá inalterado; portanto, ConstrainedCopy poderá ser usado dentro de uma região de execução restrita (Cer).

Este método é uma operação O(n), em que n é length.

Aplica-se a

Confira também