次の方法で共有


Array.Copy メソッド (Array, Array, Int64)

メモ : この名前空間、クラス、およびメンバは、.NET Framework Version 1.1 だけでサポートされています。

最初の要素を開始位置として Array から要素の範囲をコピーし、最初の要素を開始位置として他の Array にそれらの要素を貼り付けます。長さは 64 ビット整数値として指定します。

Overloads Public Shared Sub Copy( _
   ByVal sourceArray As Array, _   ByVal destinationArray As Array, _   ByVal length As Long _)
[C#]
public static void Copy(ArraysourceArray,ArraydestinationArray,longlength);
[C++]
public: static void Copy(Array* sourceArray,Array* destinationArray,__int64length);
[JScript]
public static function Copy(
   sourceArray : Array,destinationArray : Array,length : long);

パラメータ

  • sourceArray
    コピーするデータを格納している Array
  • destinationArray
    データを受け取る Array
  • length
    コピーする要素の数を表す 64 ビット整数。

例外

例外の種類 条件
ArgumentNullException sourceArray が null 参照 (Visual Basic では Nothing) です。

または

destinationArray が null 参照 (Nothing) です。

RankException sourceArraydestinationArray のランクが異なります。
ArrayTypeMismatchException sourceArraydestinationArray の型に互換性がありません。
InvalidCastException sourceArray 内の 1 つ以上の要素を destinationArray の型にキャストできません。
ArgumentOutOfRangeException length が 0 未満です。
ArgumentException length が、 sourceArray の要素の数よりも大きい値です。

または

length が、 destinationArray の要素の数よりも大きい値です。

解説

sourceArray パラメータと destinationArray パラメータは、同じ次元数である必要があります。

多次元配列間でコピーする場合、概念的には、配列は各行 (または列) の先頭と末尾をつなげて並べた長い 1 次元配列のように動作します。たとえば、配列内にそれぞれ 4 つ要素を持つ行 (または列) が 3 つある場合、配列の先頭から 6 つ要素をコピーすると、最初の行 (または列) の 4 つの要素すべてと、2 番目の行 (または列) の最初の 2 つの要素がコピーされます。

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

[C++] このメソッドは標準 C/C++ 関数 memmove と等価であり、 memcpy とは等価ではありません。

配列は参照型配列または値型配列のどちらかです。必要に応じて型のダウンキャストが実行されます。

  • 参照型配列から値型配列にコピーすると、各要素のボックス化が解除されてから、コピーされます。値型配列から参照型配列にコピーすると、各要素がボックス化されてから、コピーされます。
  • 参照型配列または値型配列から Object 配列にコピーすると、各値または参照を保持する Object が作成されてから、コピーされます。 Object 型の配列から参照型または値型の配列にコピーするときに、割り当てが不可能になる場合は、 InvalidCastException がスローされます。
  • sourceArraydestinationArray がどちらも参照型配列であるか、どちらも Object 型配列である場合は、簡易コピーが実行されます。 Array の簡易コピーは、元の Array と同じ要素への参照を含む新しい Array となります。要素自体または要素が参照する対象はコピーされません。対照的に、 Array の詳細コピーでは、要素自体および要素が直接的または間接的に参照するすべての対象がコピーされます。

配列が互換性のない型の場合は、 ArrayTypeMismatchException がスローされます。型互換性の定義を次に示します。

  • 各型はその型そのものと互換性があります。
  • 値型は、 Object 、およびこの値型によって実装されるインターフェイス型と互換性があります。値型は、インターフェイスを直接実装している場合にだけ、そのインターフェイスに結び付けられていると見なされます。接続されていない型は互換性がありません。
  • 2 つの組み込み (定義済み) 値型は、コピー元の型からコピー先の型へのコピーが拡大変換である場合に、互換性があります。拡大変換では情報が失われませんが、縮小変換では情報が失われることがあります。たとえば、32 ビット符号付き整数から 64 ビット符号付き整数への変換は拡大変換であり、64 ビット符号付き整数から 32 ビット符号付き整数への変換は縮小変換です。変換の詳細については、 Convert のトピックを参照してください。
  • 非組み込み (ユーザー定義の) 値型は、その値型そのものとだけ互換性があります。

sourceArray 内のすべての要素のダウンキャスト (基本クラスから派生クラスへのキャスト、インターフェイスからオブジェクトへのキャストなど) が必要な場合に、1 つ以上の要素を destinationArray 内の対応する型にキャストできないときは、 InvalidCastException がスローされます。

このメソッドがコピー中に例外をスローする場合は、 destinationArray の状態が未定義です。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

Array クラス | Array メンバ | System 名前空間 | Array.Copy オーバーロードの一覧