Sdílet prostřednictvím


Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Metoda

Definice

Zkopíruje rozsah prvků od Array zadaného zdrojového indexu a vloží je do jiného Array počínaje zadaným cílovým indexem. Zaručuje, že všechny změny jsou vráceny zpět, pokud kopírování nebude zcela úspěšné.

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)

Parametry

sourceArray
Array

Obsahuje Array data, která se mají zkopírovat.

sourceIndex
Int32

32bitové celé číslo, které představuje index, ve sourceArray kterém kopírování začíná.

destinationArray
Array

Ten Array přijímá data.

destinationIndex
Int32

32bitové celé číslo, které představuje index, ve destinationArray kterém se ukládání začíná.

length
Int32

32bitové celé číslo, které představuje počet prvků, které se mají zkopírovat.

Výjimky

sourceArray je null.

-nebo-

destinationArray je null.

sourceArray a destinationArray mají různé pořadí.

Typ sourceArray není stejný jako typ destinationArray ani odvozený od typu.

Nejméně jeden prvek nelze sourceArray přetypovat na typ destinationArray.

sourceIndex je menší než dolní mez první dimenze sourceArray.

-nebo-

destinationIndex je menší než dolní mez první dimenze destinationArray.

-nebo-

Hodnota length je menší než nula.

length je větší než počet prvků od sourceIndex konce sourceArray.

-nebo-

length je větší než počet prvků od destinationIndex konce destinationArray.

Poznámky

destinationArray Parametry sourceArray musí mít stejný počet dimenzí. Typ sourceArray musí být stejný jako typ nebo odvozený od destinationArray něj; jinak ArrayTypeMismatchException je vyvolán. Na rozdíl od Copy, ConstrainedCopy ověřuje kompatibilitu typů polí před provedením jakékoli operace.

Při kopírování mezi multidimenzionálními poli se pole chová jako dlouhé jednorozměrné pole, kde jsou řádky (nebo sloupce) koncepčně rozložené na konec. Obsahuje-li pole například tři řádky (nebo sloupce) po čtyřech prvcích, při kopírování šesti prvků od začátku pole budou zkopírovány všechny čtyři prvky z prvního řádku (nebo sloupce) a první dva prvky z druhého řádku (nebo sloupce). Pokud chcete začít kopírovat z druhého prvku třetího řádku (nebo sloupce), sourceIndex musí být horní mez prvního řádku (nebo sloupce) plus dvě.

Pokud sourceArray a destinationArray překrývají se, tato metoda se chová, jako by původní hodnoty sourceArray byly zachovány v dočasném umístění před destinationArray přepsání.

[C++]

Tato metoda je ekvivalentní standardní funkci memmoveC/C++ , nikoli memcpy.

Pole mohou být odkazového nebo hodnotového typu. Jsou-li sourceArray pole destinationArray typu odkaz nebo obě pole typu Object, provede se mělká kopie. Mělká kopie Array je nová Array , která obsahuje odkazy na stejné prvky jako původní Array. Nekopírují se samotné prvky ani objekty, na které odkazují. Naproti tomu hloubková kopie Array prvků kopíruje prvky a vše přímo nebo nepřímo odkazované prvky.

Pokud tato metoda vyvolá výjimku při kopírování, destinationArray zůstává beze změny, ConstrainedCopy proto lze použít v rámci omezené oblasti provádění (Cer).

Tato metoda je operace O(n), kde n je length.

Platí pro

Viz také