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 kopírování začíná.
- 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
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 memmove
C/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
.