Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
32-bitowa liczba całkowita reprezentująca indeks w sourceArray
momencie rozpoczęcia kopiowania.
- destinationIndex
- Int32
32-bitowa liczba całkowita reprezentująca indeks w destinationArray
miejscu, w którym rozpoczyna się przechowywanie.
- length
- Int32
32-bitowa liczba całkowita reprezentująca liczbę elementów do skopiowania.
Wyjątki
sourceArray
i destinationArray
mają różne rangi.
Typ sourceArray
nie jest taki sam, jak ani pochodzący z destinationArray
typu.
Nie można rzutować co najmniej jednego elementu sourceArray
na typ .destinationArray
sourceIndex
jest mniejsza niż niższa granica pierwszego wymiaru .sourceArray
-lub-
destinationIndex
jest mniejsza niż niższa granica pierwszego wymiaru .destinationArray
-lub-
Parametr length
ma wartość niższą niż zero.
length
jest większa niż liczba elementów od sourceIndex
do końca elementu sourceArray
.
-lub-
length
jest większa niż liczba elementów od destinationIndex
do końca elementu destinationArray
.
Uwagi
Parametry sourceArray
i destinationArray
muszą mieć taką samą liczbę wymiarów. Typ musi być taki sam jak lub pochodzący z destinationArray
typu. W sourceArray
przeciwnym razie ArrayTypeMismatchException zgłaszany jest typ. W przeciwieństwie do Copymetody sprawdza ConstrainedCopy zgodność typów tablic przed wykonaniem dowolnej operacji.
Podczas kopiowania między tablicami wielowymiarowymi tablica zachowuje się jak długa tablica jednowymiarowa, gdzie wiersze (lub kolumny) są koncepcyjnie ułożone na końcu. Jeśli na przykład tablica ma trzy wiersze (lub kolumny) z czterema elementami, skopiowanie sześciu elementów od początku tablicy może spowodować skopiowanie wszystkich czterech elementów pierwszego wiersza (lub kolumny) i pierwszych dwóch elementów drugiego wiersza (lub kolumny). Aby rozpocząć kopiowanie z drugiego elementu trzeciego wiersza (lub kolumny), sourceIndex
musi być górną granicą pierwszego wiersza (lub kolumny) plus długość drugiego wiersza (lub kolumny) plus dwa.
Jeśli sourceArray
i destinationArray
nakładają się na siebie, ta metoda zachowuje się tak, jakby oryginalne wartości sourceArray
zostały zachowane w lokalizacji tymczasowej przed destinationArray
zastąpieniem.
[C++]
Ta metoda jest równoważna standardowej funkcji memmove
C/C++, a nie memcpy
.
Tablice mogą być tablicami typu odwołania lub tablicami typu wartości. Jeśli sourceArray
i destinationArray
są tablicami typu odwołania lub są obie tablice typu Object, wykonywana jest płytkia kopia. Płytkia kopia elementu Array jest nową Array zawierającą odwołania do tych samych elementów co oryginalny Arrayelement . Nie są kopiowane same elementy ani to, co odwołuje się do elementów. Natomiast głęboka kopia Array kopiuje elementy i wszystkie elementy bezpośrednio lub pośrednio odwoływając się do elementów.
Jeśli ta metoda zgłasza wyjątek podczas kopiowania, destinationArray
element pozostaje niezmieniony. W związku z tym ConstrainedCopy można go użyć w regionie wykonywania ograniczonego (Cer).
Ta metoda jest operacją O(n
), gdzie n
to length
.