Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Array.Copy-Methode: (Array, Array, Int32)

 

Veröffentlicht: Oktober 2016

Kopiert einen mit dem ersten Element beginnenden Elementbereich eines Array und fügt ihn ab dem ersten Element in ein anderes Array ein. Die Länge wird als 32-Bit-Ganzzahl angegeben.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

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

Parameter

sourceArray
Type: System.Array

Das Array, das die zu kopierenden Daten enthält.

destinationArray
Type: System.Array

Das Array, das die Daten empfängt.

length
Type: System.Int32

Eine 32-Bit-Ganzzahl, die die Anzahl der zu kopierenden Elemente darstellt.

Exception Condition
ArgumentNullException

sourceArray ist null.

- oder -

destinationArray ist null.

RankException

sourceArray und destinationArray sind von unterschiedlichem Rang.

ArrayTypeMismatchException

sourceArray und destinationArray weisen inkompatible Typen auf.

InvalidCastException

Mindestens ein Element in sourceArray kann nicht in den destinationArray-Typ umgewandelt werden.

ArgumentOutOfRangeException

length ist kleiner als Null.

ArgumentException

length ist größer als die Anzahl von Elementen in sourceArray.

- oder -

length ist größer als die Anzahl von Elementen in destinationArray.

Die sourceArray und destinationArray Parameter müssen die gleiche Anzahl von Dimensionen aufweisen. Darüber hinaus destinationArray muss bereits haben wurde dimensioniert und muss eine ausreichende Anzahl von Elementen, die die kopierten Daten aufzunehmen.

Beim Kopieren zwischen mehrdimensionalen Arrays verhält sich das Array wie ein langes eindimensionales Array, in denen Zeilen (oder Spalten) konzeptionell End-to-End angeordnet sind. Wenn ein Array drei Zeilen (oder Spalten) mit vier Elementen, Kopieren von sechs Elementen vom Anfang des Arrays würde beispielsweise alle vier Elemente der ersten Zeile (oder Spalte) und die ersten beiden Elemente der zweiten Zeile (oder Spalte) kopieren.

Wenn sourceArray und destinationArray überschneiden, die diese Methode verhält sich wie die ursprünglichen Werte der sourceArray beibehalten wurden, in ein temporäres Verzeichnis vor destinationArray überschrieben wird.

[C++]

Diese Methode entspricht der C/C++-Standardfunktion memmove, nicht memcpy.

Die Arrays können Verweistyp-Arrays oder Werttyp Arrays sein. Es erfolgt eine Umwandlung des Typs, wie erforderlich.

  • Beim Kopieren von einem Referenztyp Array in ein Array von Werttyp wird jedes Element mittels Unboxing zurückkonvertiert und kopiert. Wenn von einem Werttyp Array in ein Array von Verweistypen zu kopieren, wird jedes Element geschachtelt und kopiert.

  • Beim Kopieren aus einem Array-Verweistyp oder Werttyp in einen Object Array, ein Object erstellt, um jeden Wert oder Verweis aufzunehmen und anschließend kopiert wird. Beim Kopieren aus einer Object Array in ein Array-Verweistyp oder Werttyp und die Zuweisung ist nicht möglich, eine InvalidCastException ausgelöst wird.

  • Wenn sourceArray und destinationArray Verweistyp-Arrays sind oder werden beide Arrays des Typs Object, eine flache Kopie ausgeführt wird. Eine flache Kopie von einer Array ist ein neues Array enthält Verweise auf die gleichen Elemente wie die ursprüngliche Array. Die Elemente selbst oder einem beliebigen Element verwiesen wird, durch die Elemente werden nicht kopiert. Im Gegensatz dazu eine tiefe Kopie von einer Array kopiert die Elemente und alles, was auf die Elemente direkt oder indirekt verweist.

Ein ArrayTypeMismatchException wird ausgelöst, wenn die Arrays von inkompatiblen Typen sind. Typkompatibilität ist wie folgt definiert:

  • Ein Typ ist mit sich selbst kompatibel.

  • Ein Werttyp ist kompatibel mit Object und mit einem Schnittstellentyp, der durch diesen Werttyp implementiert. Ein Werttyp gilt nur, wenn sie diese Schnittstelle, direkt implementiert mit einer Schnittstelle verbunden. Nicht verbundene Typen sind nicht kompatibel.

  • Zwei systeminterne (vordefinierte) Werttypen sind kompatibel, wenn kopieren aus einer Datenquelle in den Zieltyp eine erweiternde Konvertierung ist. Nie eine erweiternde Konvertierung verliert Informationen an, während eine einschränkende Konvertierung Informationen verloren gehen kann. Z. B. eine erweiternde Konvertierung ist eine 32-Bit-Ganzzahl mit Vorzeichen in eine 64-Bit-Ganzzahl mit Vorzeichen zu konvertieren, und konvertieren eine 64-Bit-Ganzzahl mit Vorzeichen in eine 32-Bit-Ganzzahl mit Vorzeichen ist eine einschränkende Konvertierung. Weitere Informationen zu Konvertierungen finden Sie unter Convert.

  • Ein systeminterner (Benutzerdefiniert) Werttyp ist nur mit sich selbst kompatibel.

  • Enumerationen verfügen über eine implizite Konvertierung in Enum und ihren zugrunde liegenden Typ.

Wenn jedes Element in sourceArray eine Umwandlung erfordert (z. B. von einer Basisklasse in einer abgeleiteten Klasse oder von einer Schnittstelle zu einem Objekt) und einem oder mehreren Elementen können nicht in den entsprechenden Typ umgewandelt werden destinationArray, wird eine InvalidCastException ausgelöst wird.

Wenn diese Methode eine Ausnahme während des Kopiervorgangs, des Status des destinationArray ist nicht definiert.

Diese Methode ist eine O (n) Vorgang, wobei n ist length.

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: