英語で読む

次の方法で共有


Array.CopyTo メソッド

定義

現在の 1 次元配列のすべての要素を、指定した 1 次元配列にコピーします。

オーバーロード

CopyTo(Array, Int32)

現在の 1 次元配列のすべての要素を、指定したコピー先配列インデックスで開始する指定の 1 次元配列にコピーします。 インデックスは 32 ビット整数値として指定します。

CopyTo(Array, Int64)

現在の 1 次元配列のすべての要素を、指定したコピー先配列インデックスで開始する指定の 1 次元配列にコピーします。 このインデックスは 64 ビット整数値として指定されます。

次のコード例は、 を別Arrayの にコピーArrayする方法を示しています。

C#
using System;

public class SamplesArray
{

   public static void Main()
   {

      // Creates and initializes two new Arrays.
      Array mySourceArray=Array.CreateInstance(typeof(string), 6);
      mySourceArray.SetValue("three", 0);
      mySourceArray.SetValue("napping", 1);
      mySourceArray.SetValue("cats", 2);
      mySourceArray.SetValue("in", 3);
      mySourceArray.SetValue("the", 4);
      mySourceArray.SetValue("barn", 5);
      Array myTargetArray=Array.CreateInstance(typeof(string), 15);
      myTargetArray.SetValue("The", 0);
      myTargetArray.SetValue("quick", 1);
      myTargetArray.SetValue("brown", 2);
      myTargetArray.SetValue("fox", 3);
      myTargetArray.SetValue("jumps", 4);
      myTargetArray.SetValue("over", 5);
      myTargetArray.SetValue("the", 6);
      myTargetArray.SetValue("lazy", 7);
      myTargetArray.SetValue("dog", 8);

      // Displays the values of the Array.
      Console.WriteLine("The target Array contains the following (before and after copying):");
      PrintValues(myTargetArray, ' ');

      // Copies the source Array to the target Array, starting at index 6.
      mySourceArray.CopyTo(myTargetArray, 6);

      // Displays the values of the Array.
      PrintValues(myTargetArray, ' ');
   }

   public static void PrintValues(Array myArr, char mySeparator)
   {

      System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
      int i = 0;
      int cols = myArr.GetLength(myArr.Rank - 1);
      while (myEnumerator.MoveNext())
      {
         if (i < cols)
         {
            i++;
         }
         else
         {
             Console.WriteLine();
             i = 1;
         }
         Console.Write("{0}{1}", mySeparator, myEnumerator.Current);
      }
      Console.WriteLine();
   }
}
/*
This code produces the following output.

The target Array contains the following (before and after copying):
 The quick brown fox jumps over the lazy dog
 The quick brown fox jumps over three napping cats in the barn
*/

次のコード例は、0 以外の下限を持つ 別Arrayの に をコピーArrayする方法を示しています。 ターゲット 内の既存の要素を上書きする空の要素を含め、ソース Array 全体がコピーされることに注意してください Array

C#
using System;

public class SamplesArray2
{

   public static void Main()
   {
      // Creates and initializes the source Array.
      Array myArrayZero=Array.CreateInstance(typeof(string), 3);
      myArrayZero.SetValue("zero", 0);
      myArrayZero.SetValue("one", 1);

      // Displays the source Array.
      Console.WriteLine("The array with lower bound=0 contains:");
      PrintIndexAndValues(myArrayZero);

      // Creates and initializes the target Array.
      int[] myArrLen = { 4 };
      int[] myArrLow = { 2 };
      Array myArrayTwo=Array.CreateInstance(typeof(string), myArrLen, myArrLow);
      myArrayTwo.SetValue("two", 2);
      myArrayTwo.SetValue("three", 3);
      myArrayTwo.SetValue("four", 4);
      myArrayTwo.SetValue("five", 5);

      // Displays the target Array.
      Console.WriteLine("The array with lower bound=2 contains:");
      PrintIndexAndValues(myArrayTwo);

      // Copies from the array with lower bound=0 to the array with lower bound=2.
      myArrayZero.CopyTo(myArrayTwo, 3);

      // Displays the modified target Array.
      Console.WriteLine("\nAfter copying to the target array from index 3:");
      PrintIndexAndValues(myArrayTwo);
   }

   public static void PrintIndexAndValues(Array myArray)
   {
      for (int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++)
         Console.WriteLine("\t[{0}]:\t{1}", i, myArray.GetValue(i));
   }
}
/*
This code produces the following output.

The array with lower bound=0 contains:
    [0]:    zero
    [1]:    one
    [2]:
The array with lower bound=2 contains:
    [2]:    two
    [3]:    three
    [4]:    four
    [5]:    five

After copying to the target array from index 3:
    [2]:    two
    [3]:    zero
    [4]:    one
    [5]:
*/

CopyTo(Array, Int32)

ソース:
Array.cs
ソース:
Array.cs
ソース:
Array.cs

現在の 1 次元配列のすべての要素を、指定したコピー先配列インデックスで開始する指定の 1 次元配列にコピーします。 インデックスは 32 ビット整数値として指定します。

C#
public void CopyTo (Array array, int index);
C#
public virtual void CopyTo (Array array, int index);

パラメーター

array
Array

現在の配列からコピーされる要素のコピー先である 1 次元配列。

index
Int32

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

実装

例外

arraynullです。

indexarray の下限を下回っています。

array が多次元です。

- または -

コピー元配列の要素数が、コピー先 arrayindex から末尾までの使用可能な要素数を超えています。

コピー元の Array の型をコピー先の array の型に自動的にキャストすることはできません。

ソース配列が多次元配列です。

コピー元 Array の中の少なくとも 1 つの要素を、コピー先 array の型にキャストすることができません。

注釈

このメソッドは、現在の配列インスタンスのすべての要素を、インデックス から開始して array コピー先の配列にコピーします index。 コピー先の配列は array 既に次元化されている必要があり、コピーされた要素に対応するのに十分な数の要素が必要です。 そうしないと、例外がスローされます。

このメソッドは、 インターフェイスを System.Collections.ICollection サポートしています。 実装 System.Collections.ICollection が明示的に必要でない場合は、 を使用 Copy して余分な間接参照を回避します。

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

このメソッドは O(n) 操作です。nLength です。 シャロー コピーのみを実行します。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

CopyTo(Array, Int64)

ソース:
Array.cs
ソース:
Array.cs
ソース:
Array.cs

現在の 1 次元配列のすべての要素を、指定したコピー先配列インデックスで開始する指定の 1 次元配列にコピーします。 このインデックスは 64 ビット整数値として指定されます。

C#
public void CopyTo (Array array, long index);
C#
[System.Runtime.InteropServices.ComVisible(false)]
public virtual void CopyTo (Array array, long index);
C#
[System.Runtime.InteropServices.ComVisible(false)]
public void CopyTo (Array array, long index);

パラメーター

array
Array

現在の配列からコピーされる要素のコピー先である 1 次元配列。

index
Int64

コピーを開始する array のインデックスを表す 64 ビット整数。

属性

例外

arraynullです。

indexarray の有効なインデックスの範囲外です。

array が多次元です。

- または -

コピー元配列の要素数が、コピー先 arrayindex から末尾までの使用可能な要素数を超えています。

コピー元の Array の型をコピー先の array の型に自動的にキャストすることはできません。

コピー元の Array が多次元です。

コピー元 Array の中の少なくとも 1 つの要素を、コピー先 array の型にキャストすることができません。

注釈

このメソッドは、現在の配列インスタンスのすべての要素を、インデックス から開始して array コピー先の配列にコピーします index。 コピー先の配列は array 既に次元化されている必要があり、コピーされた要素に対応するのに十分な数の要素が必要です。 そうしないと、例外がスローされます。

このメソッドは、 インターフェイスを System.Collections.ICollection サポートしています。 実装 System.Collections.ICollection が明示的に必要でない場合は、 を使用 Copy して余分な間接参照を回避します。

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

このメソッドは O(n) 操作です。nLength です。 シャロー コピーのみを実行します。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1