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 którym rozpoczyna się kopiowanie.
- destinationIndex
- Int32
32-bitowa liczba całkowita reprezentująca indeks, w destinationArray którym rozpoczyna się przechowywanie.
- length
- Int32
32-bitowa liczba całkowita reprezentująca liczbę elementów do skopiowania.
Wyjątki
Parametr sourceArray ma wartość null.
— lub —
Parametr destinationArray ma wartość null.
sourceArray i destinationArray mają różne rangi.
Typ sourceArray nie jest taki sam, jak i pochodzi z destinationArray typu .
Nie można rzutować co najmniej jednego elementu sourceArray na typ destinationArray.
sourceIndex jest mniejsza niż dolna granica pierwszego wymiaru sourceArray.
— lub —
destinationIndex jest mniejsza niż dolna granica pierwszego wymiaru destinationArray.
— lub —
Parametr length ma wartość niższą niż zero.
lengthjest większa niż liczba elementów z sourceIndex do końca .sourceArray
— lub —
lengthjest większa niż liczba elementów z destinationIndex do końca .destinationArray
Uwagi
Parametry sourceArray i destinationArray muszą mieć taką samą liczbę wymiarów. Typ sourceArray musi być taki sam jak typ lub pochodzi z niego destinationArray ; ArrayTypeMismatchException w przeciwnym razie jest zwracany element . W przeciwieństwie do Copyprogramu ConstrainedCopy sprawdza zgodność typów tablic przed wykonaniem dowolnej operacji.
Podczas kopiowania między tablicami wielowymiarowymi tablica zachowuje się jak długa tablica jednowymiarowa, w której wiersze (lub kolumny) są koncepcyjnie określone kompleksowo. Jeśli na przykład tablica zawiera trzy wiersze (lub kolumny) z czterema elementami, kopiowanie sześciu elementów od początku tablicy spowoduje 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 memmoveC/C++, a nie memcpy.
Tablice mogą być tablicami typu odwołania lub typu wartości. Jeśli sourceArray i są zarówno tablicami typu odniesienia, jak i destinationArray są obie tablice typu Object, wykonywana jest płytkia kopia. Płytkia kopia elementu Array to nowe Array , zawierające odwołania do tych samych elementów co oryginalny Arrayelement . Elementy same lub wszystkie elementy, do których odwołuje się elementy, nie są kopiowane. Natomiast głęboka kopia Array elementu kopiuje elementy i wszystkie elementy bezpośrednio lub pośrednio, do których odwołuje się element.
Jeśli ta metoda zgłasza wyjątek podczas kopiowania, destinationArray pozostaje niezmieniona, ConstrainedCopy dlatego może być używana w ograniczonym regionie wykonywania (Cer).
Ta metoda jest operacją $O(n)$, gdzie $n$ to length.