Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- sourceIndex
- Int32
Um inteiro de 32 bits que representa o índice no sourceArray
no qual a cópia é iniciada.
- 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
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
.