Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Metod

Definition

Kopierar ett område med element från en Array start vid det angivna källindexet och klistrar in dem till ett annat Array med början i det angivna målindexet. Garanterar att alla ändringar ångras om kopian inte lyckas helt.

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)

Parametrar

sourceArray
Array

Som Array innehåller de data som ska kopieras.

sourceIndex
Int32

Ett 32-bitars heltal som representerar indexet där sourceArray kopieringen börjar.

destinationArray
Array

Det Array som tar emot data.

destinationIndex
Int32

Ett 32-bitars heltal som representerar indexet där destinationArray lagringen börjar.

length
Int32

Ett 32-bitars heltal som representerar antalet element som ska kopieras.

Undantag

sourceArray är null.

-eller-

destinationArray är null.

sourceArray och destinationArray har olika rangordningar.

Typen sourceArray är varken samma som eller härledd från destinationArray typen.

Minst ett element i sourceArray kan inte omvandlas till typen destinationArray.

sourceIndex är mindre än den nedre gränsen för den första dimensionen av sourceArray.

-eller-

destinationIndex är mindre än den nedre gränsen för den första dimensionen av destinationArray.

-eller-

length är mindre än noll.

length är större än antalet element från sourceIndex till slutet av sourceArray.

-eller-

length är större än antalet element från destinationIndex till slutet av destinationArray.

Kommentarer

Parametrarna sourceArray och destinationArray måste ha samma antal dimensioner. Typen sourceArray måste vara samma som eller härledd från destinationArray typen. Annars genereras en ArrayTypeMismatchException . Till skillnad från Copyverifierar ConstrainedCopy verifierar kompatibiliteten för matristyperna innan du utför någon åtgärd.

När du kopierar mellan flerdimensionella matriser fungerar matrisen som en lång endimensionell matris, där raderna (eller kolumnerna) konceptmässigt läggs från slutpunkt till slutpunkt. Om en matris till exempel har tre rader (eller kolumner) med fyra element var kopierar du sex element från början av matrisen och kopierar alla fyra elementen i den första raden (eller kolumnen) och de två första elementen i den andra raden (eller kolumnen). Om du vill börja kopiera från det andra elementet i den tredje raden (eller kolumnen) sourceIndex måste du vara den övre gränsen för den första raden (eller kolumnen) plus längden på den andra raden (eller kolumnen) plus två.

Om sourceArray och destinationArray överlappar fungerar den här metoden som om de ursprungliga värdena sourceArray för bevarades på en tillfällig plats innan destinationArray den skrevs över.

[C++]

Den här metoden motsvarar C/C++-standardfunktionen memmove, inte memcpy.

Matriserna kan vara matriser av referenstyp eller värdetyp. Om sourceArray och destinationArray är båda matriser av referenstyp eller båda matriserna av typen Objectutförs en ytlig kopia. En ytlig kopia av en Array är en ny Array som innehåller referenser till samma element som det ursprungliga Array. Elementen själva eller något som refereras till av elementen kopieras inte. Däremot kopierar en djup kopia av ett Array element och allt som refereras direkt eller indirekt av elementen.

Om den här metoden genererar ett undantag vid kopiering destinationArray , förblir den oförändrad. Därför ConstrainedCopy kan den användas i en begränsad körningsregion (Cer).

Den här metoden är en åtgärd $O(n)$ där $n$ är length.

Gäller för

Se även