Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) メソッド

定義

指定したソース インデックスから始まる Array から要素の範囲をコピーし、指定したコピー先インデックスから始まる別の Array に貼り付けます。 コピーが完全に成功しない場合は、すべての変更が元に戻されることを保証します。

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)

パラメーター

sourceArray
Array

コピーするデータを含む Array

sourceIndex
Int32

コピーの開始位置 sourceArray インデックスを表す 32 ビット整数。

destinationArray
Array

データを受信する Array

destinationIndex
Int32

格納を開始する destinationArray 内のインデックスを表す 32 ビット整数。

length
Int32

コピーする要素の数を表す 32 ビット整数。

例外

sourceArraynullです。

-又は-

destinationArraynullです。

sourceArraydestinationArray は異なるランクを持っています。

sourceArray型は、destinationArray型と同じでも派生した型でもありません。

sourceArray内の少なくとも 1 つの要素をdestinationArrayの型にキャストすることはできません。

sourceIndex は、 sourceArrayの最初の次元の下限より小さい値です。

-又は-

destinationIndex は、 destinationArrayの最初の次元の下限より小さい値です。

-又は-

length が 0 未満です。

length は、 sourceIndex から sourceArray の末尾までの要素の数を超えています。

-又は-

length は、 destinationIndex から destinationArray の末尾までの要素の数を超えています。

注釈

sourceArrayパラメーターと destinationArray パラメーターは、同じ数のディメンションを持つ必要があります。 sourceArray型は、destinationArray型と同じか派生している必要があります。それ以外の場合は、ArrayTypeMismatchExceptionがスローされます。 Copyとは異なり、ConstrainedCopyは操作を実行する前に配列型の互換性を検証します。

多次元配列間でコピーする場合、配列は長い 1 次元配列のように動作し、行 (または列) は概念的にエンドツーエンドで配置されます。 たとえば、配列に 3 つの行 (または列) があり、それぞれ 4 つの要素がある場合、配列の先頭から 6 つの要素をコピーすると、最初の行 (または列) の 4 つの要素と、2 番目の行 (または列) の最初の 2 つの要素がすべてコピーされます。 3 番目の行 (または列) の 2 番目の要素からのコピーを開始するには、 sourceIndex は、最初の行 (または列) の上限に 2 行目 (または列) の長さと 2 を加えたものにする必要があります。

sourceArraydestinationArrayが重複している場合、このメソッドは、sourceArrayの元の値が一時的な場所に保持された場合と同様に動作destinationArray上書きされます。

[C++]

このメソッドは、memmoveではなく、標準の C/C++ 関数memcpyに相当します。

配列には、参照型または値型の配列を指定できます。 sourceArraydestinationArrayの両方が参照型の配列であるか、または両方ともObject型の配列である場合は、浅いコピーが実行されます。 Arrayの浅いコピーは、元のArrayと同じ要素への参照を含む新しいArrayです。 要素自体または要素によって参照される要素はコピーされません。 これに対し、 Array のディープ コピーでは、要素とその要素によって直接または間接的に参照されるすべてのものがコピーされます。

このメソッドがコピー中に例外をスローした場合、 destinationArray は変更されません。したがって、 ConstrainedCopy は制約された実行領域内 (Cer) 内で使用できます。

このメソッドは $O(n)$ 演算です。ここで、$n$ は length

適用対象

こちらもご覧ください