次の方法で共有


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 の型にキャストできません。

sourceIndexsourceArray の最初の次元の下限を下回っています。

  • または -

destinationIndexdestinationArray の最初の次元の下限を下回っています。

  • または -

length が 0 未満です。

lengthsourceIndex から最後の sourceArray までの要素の数を超えています。

  • または -

lengthdestinationIndex から最後の destinationArray までの要素の数を超えています。

注釈

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

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

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

[C++]

このメソッドは、標準の C/C++ 関数 memmoveに相当し、同じではありません memcpy

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

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

このメソッドは O(n) 操作です。nlength です。

適用対象

こちらもご覧ください