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

C#でジェネリックリスト(List)を複製する方法|CopyToメソッドの使い方を解説

リスト(List<T>)は、同じデータ型の要素を格納するためのジェネリックコレクションです。C#でリストの内容を複製(クローン)したい場合、CopyToメソッドを使用して配列へコピーするのが基本的な方法の一つです。

まず、リストを宣言して要素を追加します。

List< string > myList = new List< string >();
myList.Add("Programming");
myList.Add("Web Dev");
myList.Add("Database");

次に、コピー先となる新しい配列を作成し、CopyToメソッドでリストの中身を複製します。

string[] arr = new string[10];
myList.CopyTo(arr);

なお、CopyToメソッドで複製できるのは配列である点に注意してください。リスト同士を複製したい場合は、後述する別の方法を利用します。

サンプルコード

以下に、CopyToメソッドを使った複製処理の完全なコード例を示します。

using System;
using System.Collections.Generic;

public class Demo {
    public static void Main() {

        List< string > myList = new List< string >();
        myList.Add("Programming");
        myList.Add("Web Dev");
        myList.Add("Database");

        Console.WriteLine("最初のリスト...");

        foreach(string value in myList) {
            Console.WriteLine(value);
        }

        string[] arr = new string[10];
        myList.CopyTo(arr);

        Console.WriteLine("複製後...");

        foreach(string value in arr) {
            Console.WriteLine(value);
        }
    }
}

実行結果

最初のリスト...
Programming
Web Dev
Database
複製後...
Programming
Web Dev
Database

リストからリストを複製する場合

CopyToメソッドは配列へのコピー専用です。同じ型の別のリストとして複製したい場合は、コレクション初期化子やLINQのToList()メソッドが便利です。

// コンストラクタを使う方法
List< string > clonedList = new List< string >(myList);

// LINQのToList()を使う方法
List< string > clonedList2 = myList.ToList();

どちらの方法でも、元のリストと同じ要素を持つ新しいリストが生成されます。用途に応じて使い分けるとよいでしょう。

  1. 【Java】事前条件チェック:リストがnullまたは空でないことを確認する方法

    事前条件(Precondition)とは、メソッドが正しく動作するために、渡された引数が満たしているべき条件のことです。ここでは、パラメータとして渡されたリストがnullまたは空(要素数ゼロ)でないことを確認する例を見ていきましょう。 サンプルコード public void my_fun(List<Object> myList){    if (myList == null){       throw new IllegalArgumentException("List is null");   &n

  2. Pythonでリストをコピーする方法まとめ:スライス、list()、copyモジュールの使い分け

    Pythonでは、代入演算子(=)を使っても新しいオブジェクトは作成されません。既存のオブジェクトに別の名前(参照)を付けるだけです。この挙動は、組み込み関数 id() を使うことで確認できます。 >>> L1 = [1,2,3,4] >>> L2 = L1 >>> id(L1) 185117137928 >>> id(L2) 185117137928 L1 と L2 のIDが同じであることから、両者が同一のオブジェクトを参照していることがわかります。つまり、どちらか一方を変更するともう一方にも影響が及びます。リストを