Condividi tramite


Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Metodo

Definizione

Copia un intervallo di elementi da un oggetto Array a partire dall'indice di origine specificato e lo incolla in un altro oggetto Array a partire dall'indice di destinazione specificato. Garantisce che tutte le modifiche vengano annullate se la copia non riesce completamente.

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)

Parametri

sourceArray
Array

Oggetto Array che contiene i dati da copiare.

sourceIndex
Int32

Intero a 32 bit che rappresenta l'indice in sourceArray da cui viene avviata la copia.

destinationArray
Array

Oggetto Array che riceve i dati.

destinationIndex
Int32

Intero a 32 bit che rappresenta l'indice in destinationArray da cui viene avviata l'archiviazione.

length
Int32

Intero a 32 bit che rappresenta il numero degli elementi da copiare.

Eccezioni

sourceArray è null.

-oppure-

destinationArray è null.

sourceArray e destinationArray hanno classificazioni diverse.

Il tipo sourceArray non è né lo stesso né derivato dal tipo destinationArray.

Non è possibile eseguire il cast di almeno un elemento in sourceArray al tipo di destinationArray.

sourceIndex è minore del limite inferiore della prima dimensione di sourceArray.

-oppure-

destinationIndex è minore del limite inferiore della prima dimensione di destinationArray.

-oppure-

length è minore di zero.

length è maggiore del numero di elementi compresi tra sourceIndex e la fine di sourceArray.

-oppure-

length è maggiore del numero di elementi compresi tra destinationIndex e la fine di destinationArray.

Commenti

I sourceArray parametri e destinationArray devono avere lo stesso numero di dimensioni. Il sourceArray tipo deve essere uguale o derivato dal destinationArray tipo. In caso contrario, viene generata un'eccezione ArrayTypeMismatchException . A differenza di Copy, ConstrainedCopy verifica la compatibilità dei tipi di matrice prima di eseguire qualsiasi operazione.

Quando si esegue la copia tra matrici multidimensionali, la matrice si comporta come una matrice unidimensionale lunga, in cui le righe (o le colonne) vengono disposte concettualmente end-to-end. Ad esempio, se una matrice ha tre righe (o colonne) con quattro elementi ciascuno, la copia di sei elementi dall'inizio della matrice copierà tutti e quattro gli elementi della prima riga (o colonna) e i primi due elementi della seconda riga (o colonna). Per iniziare a copiare dal secondo elemento della terza riga (o colonna), sourceIndex deve essere il limite superiore della prima riga (o colonna) più la lunghezza della seconda riga (o colonna) più due.

Se sourceArray e destinationArray si sovrappongono, questo metodo si comporta come se i valori originali di sourceArray siano stati mantenuti in una posizione temporanea prima destinationArray della sovrascrittura.

[C++]

Questo metodo equivale alla funzione memmoveC/C++ standard, non memcpya .

Le matrici possono essere matrici di tipo riferimento o matrici di tipo valore. Se sourceArray e destinationArray sono entrambe matrici di tipo riferimento o sono entrambe matrici di tipo Object, viene eseguita una copia superficiale. Una copia superficiale di un oggetto Array è un nuovo Array oggetto contenente riferimenti agli stessi elementi dell'oggetto originale Array. Gli elementi stessi o qualsiasi elemento a cui fanno riferimento gli elementi non vengono copiati. Al contrario, una copia completa di un Array oggetto copia gli elementi e tutto direttamente o indirettamente a cui fanno riferimento gli elementi.

Se questo metodo genera un'eccezione durante la copia, l'oggetto destinationArray rimane invariato, pertanto ConstrainedCopy può essere usato all'interno di un'area di esecuzione vincolata (Cer).

Questo metodo è un'operazione O(n), dove n è length.

Si applica a

Vedi anche