Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- sourceIndex
- Int32
32bitové celé číslo, které představuje index, ve sourceArray kterém začíná kopírování.
- 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 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.