Freigeben über


Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Methode

Definition

Kopiert einen beim angegebenen Quellindex beginnenden Elementbereich aus einem Array und fügt ihn ab dem angegebenen Zielindex in ein anderes Array ein. Stellt sicher, dass alle Änderungen rückgängig gemacht werden, wenn der Kopiervorgang nicht vollständig abgeschlossen wurde.

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)

Parameter

sourceArray
Array

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

sourceIndex
Int32

Eine 32-Bit-Ganzzahl, die den Index im sourceArray angibt, ab dem kopiert werden soll.

destinationArray
Array

Das Array, das die Daten empfängt.

destinationIndex
Int32

Eine 32-Bit-Ganzzahl, die den Index im destinationArray angibt, ab dem gespeichert werden soll.

length
Int32

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

Ausnahmen

sourceArray ist null.

- oder -

destinationArray ist null.

sourceArray und destinationArray sind von unterschiedlichem Rang.

Der sourceArray-Typ entspricht weder dem destinationArray-Typ, noch wird er von diesem abgeleitet.

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

sourceIndex ist kleiner als die untere Grenze der ersten Dimension von sourceArray.

- oder -

destinationIndex ist kleiner als die untere Grenze der ersten Dimension von destinationArray.

- oder -

length ist kleiner als Null.

length ist größer als die Anzahl der Elemente vom sourceIndex bis zum Ende des sourceArrays.

  • oder -

length ist größer als die Anzahl der Elemente vom destinationIndex bis zum Ende des destinationArrays.

Hinweise

Die sourceArray Parameter destinationArray müssen dieselbe Anzahl von Dimensionen aufweisen. Der sourceArray Typ muss mit dem destinationArray Typ identisch sein oder vom Typ abgeleitet werden. Andernfalls wird ein ArrayTypeMismatchException Ausgelöst. ConstrainedCopy Im Gegensatz dazu Copyüberprüft die Kompatibilität der Arraytypen vor dem Ausführen eines Vorgangs.

Beim Kopieren zwischen mehrdimensionalen Arrays verhält sich das Array wie ein langes eindimensionales Array, wobei die Zeilen (oder Spalten) konzeptionell end-to-End gelegt werden. Wenn beispielsweise ein Array drei Zeilen (oder Spalten) mit vier Elementen enthält, würde das Kopieren von sechs Elementen vom Anfang des Arrays alle vier Elemente der ersten Zeile (oder Spalte) und die ersten beiden Elemente der zweiten Zeile (oder Spalte) kopieren. Um mit dem Kopieren aus dem zweiten Element der dritten Zeile (oder Spalte) zu beginnen, sourceIndex muss die obere Grenze der ersten Zeile (oder Spalte) und die Länge der zweiten Zeile (oder Spalte) plus zwei sein.

Wenn sourceArray und destinationArray überlappen, verhält sich diese Methode so, als ob die ursprünglichen Werte sourceArray an einem temporären Speicherort beibehalten wurden, bevor destinationArray sie überschrieben werden.

[C++]

Diese Methode entspricht der Standardfunktion memmoveC/C++ und nicht memcpy.

Die Arrays können Referenztyparrays oder Werttyparrays sein. destinationArray Wenn sourceArray beide Referenztyparrays vorhanden sind oder beide Arrays vom Typ Objectsind, wird eine flache Kopie ausgeführt. Eine flache Kopie eines Array Elements ist eine neue Array , die Verweise auf die gleichen Elemente wie das Original Arrayenthält. Die Elemente selbst oder etwas, auf das von den Elementen verwiesen wird, werden nicht kopiert. Im Gegensatz dazu kopiert eine tiefe Kopie der Array Elemente und alles direkt oder indirekt von den Elementen verwiesen.

Wenn diese Methode während des Kopierens eine Ausnahme ausgelöst hat, kann dies destinationArray ConstrainedCopy daher in einem eingeschränkten Ausführungsbereich (Cer) verwendet werden.

Diese Methode ist ein O()-nVorgang, wo n ist length.

Gilt für

Siehe auch