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

Definition

Kopiert einen Bereich von Elementen von einem Array Anfang am angegebenen Quellindex und fügt sie an einen anderen Array ab dem angegebenen Zielindex ein. Garantiert, dass alle Änderungen rückgängig gemacht werden, wenn die Kopie nicht vollständig erfolgreich ist.

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

Die Array daten, die kopiert werden sollen.

sourceIndex
Int32

Eine 32-Bit-Ganzzahl, die den Index darstellt, in sourceArray dem das Kopieren beginnt.

destinationArray
Array

Das Array , das die Daten empfängt.

destinationIndex
Int32

Eine 32-Bit-Ganzzahl, die den Index darstellt, in destinationArray dem das Speichern beginnt.

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 haben unterschiedliche Rangfolgen.

Der sourceArray Typ ist weder identisch noch vom destinationArray Typ abgeleitet.

Mindestens ein Element in sourceArray kann nicht in den Typ von destinationArray.

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 0 (null).

length ist größer als die Anzahl der Elemente von sourceIndex bis zum Ende von sourceArray.

-oder-

length ist größer als die Anzahl der Elemente von destinationIndex bis zum Ende von destinationArray.

Hinweise

Die Parameter sourceArray und Die destinationArray Parameter müssen dieselbe Anzahl von Dimensionen aufweisen. Der sourceArray Typ muss mit dem destinationArray Typ übereinstimmen oder vom Typ abgeleitet sein. Andernfalls wird ein ArrayTypeMismatchException Fehler ausgelöst. Im Gegensatz dazu CopyConstrainedCopy ü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, bei dem die Zeilen (oder Spalten) konzeptionell end-to-end angeordnet sind. Wenn ein Array z. B. drei Zeilen (oder Spalten) mit jeweils 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) plus der 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 C/C++-Standardfunktion memmove, nicht memcpy.

Die Arrays können Bezugstyp- oder Werttyparrays sein. Wenn sourceArray es destinationArray sich bei beiden Arrays vom Typ "Bezug" handelt oder beide Arrays Objectsind, wird eine flache Kopie ausgeführt. Eine flache Kopie eines Elements Array ist eine neue Array , die Verweise auf dieselben Elemente wie das Original Arrayenthält. Die Elemente selbst oder alle Elemente, auf die von den Elementen verwiesen wird, werden nicht kopiert. Im Gegensatz dazu kopiert eine tiefe Kopie einer Array Kopie die Elemente und alles direkt oder indirekt von den Elementen referenziert.

Wenn diese Methode beim Kopieren eine Ausnahme auslöst, bleibt dies destinationArray unverändert; daher ConstrainedCopy kann innerhalb eines eingeschränkten Ausführungsbereichs (Cer) verwendet werden.

Diese Methode ist ein $O(n)$-Vorgang, wobei $n$ ist length.

Gilt für:

Weitere Informationen