C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のArray.CopyTo()とArray.Clone()メソッドの使い方と違い

C#のCopyTo()メソッドは、現在の1次元配列のすべての要素を、指定したインデックスを起点として別の1次元配列へコピーします。コピー先の開始位置は32ビット整数で指定します。

このメソッドでは、ソース配列のどの位置からコピーを開始するかを自由に設定できるため、配列間で部分的なデータ転送を行いたい場合にも便利です。なお、コピー先の配列はあらかじめ十分なサイズで作成しておく必要があります。

CopyTo()メソッドの使用例

以下は、C#で配列クラスのCopyTo()メソッドを使用する例です。

using System;

class Program {
    static void Main() {
        int[] arrSource = new int[4];
        arrSource[0] = 5;
        arrSource[1] = 9;
        arrSource[2] = 1;
        arrSource[3] = 3;

        int[] arrTarget = new int[4];

        // CopyTo()メソッドでコピー
        arrSource.CopyTo(arrTarget, 0);

        Console.WriteLine("コピー先の配列 ...");
        foreach (int value in arrTarget) {
            Console.WriteLine(value);
        }
    }
}

このコードでは、arrSourceの全要素がarrTargetのインデックス0以降へコピーされ、実行すると「5, 9, 1, 3」が出力されます。

Clone()メソッドとは

Clone()メソッドは、配列全体の複製(シャローコピー)を作成します。戻り値はobject型であるため、as演算子や明示的なキャストを使って元の配列型に変換する必要があります。

以下は、文字列配列をClone()メソッドで複製する例です。

Clone()メソッドの使用例

using System;

class Program {
    static void Main() {
        string[] arr = { "one", "two", "three", "four", "five" };
        string[] arrCloned = arr.Clone() as string[];

        Console.WriteLine(string.Join(",", arr));

        // 複製された配列を出力
        Console.WriteLine(string.Join(",", arrCloned));
        Console.WriteLine();
    }
}

実行結果では、元の配列と複製された配列の両方が「one,two,three,four,five」と出力されます。

CopyTo()とClone()の違い

  • CopyTo():既存の配列に対して要素をコピーします。コピー先の配列を事前に用意する必要があり、開始インデックスを指定できます。
  • Clone():新しい配列オブジェクトを作成して返します。配列全体を複製するため、部分的なコピーはできません。

用途に応じて使い分けることで、配列操作をより効率的に行えます。

  1. C#のArray.ConstrainedCopy()メソッドの使い方を解説

    概要C#のArray.ConstrainedCopy()メソッドは、コピー元の配列(ソース配列)の指定したインデックスから要素の範囲を取り出し、別の配列(コピー先)の指定したインデックス以降に貼り付けるための静的メソッドです。一般的なArray.Copy()メソッドとよく似ていますが、ConstrainedCopy()には「コピー操作が完全に成功しない場合、コピー先の配列に一切の変更が加えられない」という強力な保証がある点が大きな特徴です。構文public static void ConstrainedCopy(Array sourceArr, int sourceIndex, Array d

  2. C#の多次元配列とは?2次元配列の宣言方法と使い方を実例付きで解説

    C#では、多次元配列を扱うことができます。int型の2次元配列は、次のように宣言します。int[] a;多次元配列の中で最もシンプルな形式が2次元配列です。2次元配列とは、1次元配列を要素として持つ配列、すなわち「配列の配列」のような構造をイメージすると分かりやすいでしょう。例えば、次の図は3行4列の2次元配列を表しています。多次元配列の使用例ここからは、実際にC#で多次元配列を操作するサンプルコードを見ていきましょう。以下の例では、5行2列の2次元配列を宣言・初期化し、入れ子になったforループですべての要素を出力します。using System; namespace ArrayApplic