Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Array.Copy (Array, Array, Int32)

 

Data di pubblicazione: ottobre 2016

Copia un intervallo di elementi da un oggetto Array a partire dal primo elemento e lo incolla in un altro oggetto Array a partire dal primo elemento. La lunghezza viene specificata come intero a 32 bit.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

public static void Copy(
	Array sourceArray,
	Array destinationArray,
	int length
)

Parametri

sourceArray
Type: System.Array

Oggetto Array che contiene i dati da copiare.

destinationArray
Type: System.Array

Oggetto Array che riceve i dati.

length
Type: System.Int32

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

Exception Condition
ArgumentNullException

sourceArray è null.

-oppure-

destinationArray è null.

RankException

sourceArray e destinationArray hanno classificazioni diverse.

ArrayTypeMismatchException

I tipi di sourceArray e destinationArray sono incompatibili.

InvalidCastException

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

ArgumentOutOfRangeException

length è minore di zero.

ArgumentException

length è maggiore del numero di elementi in sourceArray.

-oppure-

length è maggiore del numero di elementi in destinationArray.

Il sourceArray e destinationArray i parametri devono contenere lo stesso numero di dimensioni. Inoltre, destinationArray deve già dimensionata e deve avere un numero sufficiente di elementi da includere tutti i dati copiati.

Durante la copia tra le matrici multidimensionali, la matrice si comporta come una matrice unidimensionale di tempo, in cui le righe (o le colonne) sono concettualmente disposte end-to-end. Ad esempio, se una matrice dispone di tre righe (o le colonne) con quattro elementi, ogni copiando sei elementi dall'inizio della matrice copiava tutti e quattro gli elementi della prima riga (o della colonna) e i primi due elementi della seconda riga (o colonna).

Se sourceArray e destinationArray si sovrappongono, questo metodo si comporta come se i valori originali di sourceArray siano stati conservati in un percorso temporaneo prima di destinationArray viene sovrascritto.

[C++]

Questo metodo è equivalente alla funzione standard C/C++ memmove, non memcpy.

Le matrici possono essere matrici di tipo riferimento o matrici di tipi di valore. Viene eseguito il downcast del tipo, come richiesto.

  • Durante la copia da una matrice di tipo riferimento a una matrice di tipo di valore, ogni elemento è unboxed e quindi copiata. Quando si copia da una matrice di tipo di valore in una matrice di tipo riferimento, ogni elemento viene sottoposto a boxing e quindi copiato.

  • Quando si copia da una matrice di tipo riferimento o tipo di valore a un Object matrice, un Object viene creata per contenere ogni valore o riferimento e quindi copiata. Durante la copia da un Object matrice a una matrice di tipo riferimento o tipo di valore e l'assegnazione non è possibile, un InvalidCastException viene generata un'eccezione.

  • Se sourceArray e destinationArray sono entrambe le matrici di tipo riferimento o entrambe le matrici di tipo Object, viene eseguita una copia superficiale. Una copia superficiale di un Array è una nuova Array contenenti riferimenti agli stessi elementi originale Array. Gli elementi stessi o qualsiasi elemento a cui fa riferimento gli elementi non vengono copiati. Al contrario, una copia completa di un Array copia gli elementi e tutti gli elementi direttamente o indirettamente a cui fa riferimento gli elementi.

Un ArrayTypeMismatchException viene generato se le matrici di tipi incompatibili. Compatibilità del tipo viene definita come segue:

  • Un tipo è compatibile con se stesso.

  • È compatibile con un tipo di valore Object e con un'interfaccia implementata dal tipo di valore. Un tipo di valore viene considerato connesso a un'interfaccia solo se implementa l'interfaccia direttamente. I tipi disconnessi non sono compatibili.

  • Due tipi di valore intrinseco (predefinito) sono compatibili se la copia dal tipo di origine al tipo di destinazione è una conversione di ampliamento. Una conversione widening mai perdite di informazioni, mentre una conversione di narrowing può provocare la perdita di informazioni. Ad esempio, la conversione di un intero con segno a 32 bit in un intero con segno a 64 bit è una conversione verso e la conversione di un intero con segno a 64 bit in un intero con segno a 32 bit è una conversione di narrowing. Per ulteriori informazioni sulle conversioni, vedere Convert.

  • Un tipo di valore (definita dall'utente) non intrinseco è compatibile solo con se stesso.

  • Le enumerazioni dispongono di una conversione implicita a Enum e al tipo sottostante.

Se ogni elemento in sourceArray richiede un downcast (ad esempio, da una classe base per una classe derivata o da un'interfaccia a un oggetto) e uno o più elementi non è possibile eseguire il cast al tipo corrispondente in destinationArray, un InvalidCastException viene generata un'eccezione.

Se questo metodo genera un'eccezione durante la copia, lo stato di destinationArray non è definito.

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

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: