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

Definicja

Kopiuje szereg elementów od początkowego Array określonego indeksu źródłowego i wkleja je do innego Array , zaczynając 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 momencie rozpoczęcia kopiowania.

destinationArray
Array

Element Array , który odbiera dane.

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 to null.

-lub-

destinationArray to null.

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

sourceIndexjest mniejsza niż niższa granica pierwszego wymiaru .sourceArray

-lub-

destinationIndexjest 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 memmoveC/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.

Dotyczy

Zobacz też