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

Definice

Zkopíruje rozsah prvků od zadaného zdrojového indexu a vloží je do jiného ArrayArray počínaje zadaným cílovým indexem. Zaručuje, že všechny změny se vrátí 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á chcete zkopírovat.

sourceIndex
Int32

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

destinationArray
Array

Ten Array přijímá data.

destinationIndex
Int32

32bitové celé číslo, které představuje index, ve destinationArray kterém začíná ukládá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ý ani odvozený z destinationArray 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.

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

nebo

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

Poznámky

sourceArray Parametry destinationArray musí mít stejný počet dimenzí. Typ sourceArray musí být stejný jako typ nebo odvozený z destinationArray typu. V opačném případě dojde k ArrayTypeMismatchException vyvolání typu. Na rozdíl od Copytoho 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 konci. Pokud má například matice tři řádky (nebo sloupce) se čtyřmi prvky, zkopírování šesti prvků od začátku pole zkopíruje všechny čtyři prvky prvního řádku (nebo sloupce) a první dva prvky druhého řádku (nebo sloupce). Chcete-li 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 délka druhého řádku (nebo sloupce) plus dva.

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.

Matice můžou být typu odkazu nebo pole typu hodnota. Jsou-li sourceArray obě destinationArray matice typu odkaz nebo jsou obě matice typu Object, provede se mělká kopie. Mělká kopie je Array nová Array , která obsahuje odkazy na stejné prvky jako původní Array. Samotné prvky nebo cokoli, na co odkazují prvky, se nekopírují. Naproti tomu hloubková Array kopie prvků a všech prvků přímo nebo nepřímo odkazovaných prvky.

Pokud tato metoda při kopírování vyvolá výjimku, destinationArray zůstane 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é