Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Method

定義

指定したコピー元インデックスを開始位置として Array から要素の範囲をコピーし、指定したコピー先インデックスを開始位置として他の Array にそれらの要素を貼り付けます。Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. コピーが完全に成功しない限り、変更は一切適用されません。Guarantees that all changes are undone if the copy does not succeed completely.

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 Array Array

コピーするデータを格納している ArrayThe Array that contains the data to copy.

sourceIndex
Int32 Int32 Int32 Int32

コピー操作の開始位置となる sourceArray 内のインデックスを表す 32 ビット整数。A 32-bit integer that represents the index in the sourceArray at which copying begins.

destinationArray
Array Array Array Array

データを受け取る ArrayThe Array that receives the data.

destinationIndex
Int32 Int32 Int32 Int32

格納を開始する destinationArray のインデックスを表す 32 ビット整数。A 32-bit integer that represents the index in the destinationArray at which storing begins.

length
Int32 Int32 Int32 Int32

コピーする要素の数を表す 32 ビット整数。A 32-bit integer that represents the number of elements to copy.

例外

sourceArraynull です。sourceArray is null.

- または --or- destinationArraynullです。destinationArray is null.

sourceArraydestinationArray のランクが異なります。sourceArray and destinationArray have different ranks.

sourceArray はどちらも同じでもなく、destinationArray 型から派生したものでもありません。The sourceArray type is neither the same as nor derived from the destinationArray type.

sourceArray の少なくとも 1 つの要素が destinationArray の型にキャストできません。At least one element in sourceArray cannot be cast to the type of destinationArray.

sourceIndexsourceArray の最初の次元の下限を下回っています。sourceIndex is less than the lower bound of the first dimension of sourceArray.

- または --or- destinationIndexdestinationArray の最初の次元の下限を下回っています。destinationIndex is less than the lower bound of the first dimension of destinationArray.

- または --or- length が 0 未満です。length is less than zero.

lengthsourceIndex から最後の sourceArray までの要素の数を超えています。length is greater than the number of elements from sourceIndex to the end of sourceArray.

または-or- lengthdestinationIndex から最後の destinationArray までの要素の数を超えています。length is greater than the number of elements from destinationIndex to the end of destinationArray.

注釈

@No__t-0 および destinationArray パラメーターの次元数は同じである必要があります。The sourceArray and destinationArray parameters must have the same number of dimensions. @No__t-0 型は、と同じであるか、または destinationArray 型から派生している必要があります。それ以外の場合、ArrayTypeMismatchException がスローされます。The sourceArray type must be the same as or derived from the destinationArray type; otherwise, an ArrayTypeMismatchException is thrown. @No__t-0 とは異なり、ConstrainedCopy は、何らかの操作を実行する前に配列型の互換性を確認します。Unlike Copy, ConstrainedCopy verifies the compatibility of the array types before performing any operation.

多次元配列間でコピーを行う場合、配列は、行 (または列) が概念的にエンドツーエンドでレイアウトされる、長い1次元配列のように動作します。When copying between multidimensional arrays, the array behaves like a long one-dimensional array, where the rows (or columns) are conceptually laid end-to-end. たとえば、配列に4つの要素を持つ3つの行 (または列) がある場合、配列の先頭から6つの要素をコピーすると、最初の行 (または列) の4つの要素と2番目の行 (または列) の最初の2つの要素がコピーされます。For example, if an array has three rows (or columns) with four elements each, copying six elements from the beginning of the array would copy all four elements of the first row (or column) and the first two elements of the second row (or column). 3番目の行 (または列) の2番目の要素からコピーを開始するには、sourceIndex は最初の行 (または列) と2番目の行の長さ (または列) に2を加算した値である必要があります。To start copying from the second element of the third row (or column), sourceIndex must be the upper bound of the first row (or column) plus the length of the second row (or column) plus two.

@No__t-0 および destinationArray が重複する場合、このメソッドは destinationArray が上書きされる前に sourceArray の元の値が一時的な場所に保持されていたかのように動作します。If sourceArray and destinationArray overlap, this method behaves as if the original values of sourceArray were preserved in a temporary location before destinationArray is overwritten.

[C++][C++]

このメソッドは、memcpy ではC++なく、標準 C/関数 memmove と同じです。This method is equivalent to the standard C/C++ function memmove, not memcpy.

配列には、参照型の配列または値型の配列を指定できます。The arrays can be reference-type arrays or value-type arrays. @No__t-0 と destinationArray が両方とも参照型配列であるか、両方とも Object 型の配列である場合、簡易コピーが実行されます。If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. @No__t-0 の簡易コピーは、元の Array と同じ要素への参照を含む新しい Array です。A shallow copy of an Array is a new Array containing references to the same elements as the original Array. 要素自体、または要素によって参照されるものはコピーされません。The elements themselves or anything referenced by the elements are not copied. これに対し、Array の詳細コピーでは、要素と要素によって直接的または間接的に参照されるすべての要素がコピーされます。In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

コピー中にこのメソッドが例外をスローした場合、@no__t 0 は変更されません。したがって、ConstrainedCopy は、制約された実行領域 (@no__t) 内で使用できます。If this method throws an exception while copying, the destinationArray remains unchanged; therefore, ConstrainedCopy can be used within a constrained execution region (Cer).

このメソッドは O(n) 操作です。nlength です。This method is an O(n) operation, where n is length.

適用対象

こちらもご覧ください