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

Definicja

Kopiuje szereg elementów od określonego indeksu źródłowego Array i wkleja je do innego Array rozpoczynającego się od określonego indeksu docelowego. Gwarantuje, że wszystkie zmiany zostaną cofnięte, jeśli kopia nie powiedzie się całkowicie.

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

Element Array zawierający dane do skopiowania.

sourceIndex
Int32

32-bitowa liczba całkowita reprezentująca indeks, w sourceArray którym rozpoczyna się kopiowanie.

destinationArray
Array

Element Array odbierający dane.

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.

Dotyczy

Zobacz też