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();
どちらの方法でも、元のリストと同じ要素を持つ新しいリストが生成されます。用途に応じて使い分けるとよいでしょう。
-
【Java】事前条件チェック:リストがnullまたは空でないことを確認する方法
事前条件(Precondition)とは、メソッドが正しく動作するために、渡された引数が満たしているべき条件のことです。ここでは、パラメータとして渡されたリストがnullまたは空(要素数ゼロ)でないことを確認する例を見ていきましょう。 サンプルコード public void my_fun(List<Object> myList){ if (myList == null){ throw new IllegalArgumentException("List is null"); &n
-
Pythonでリストをコピーする方法まとめ:スライス、list()、copyモジュールの使い分け
Pythonでは、代入演算子(=)を使っても新しいオブジェクトは作成されません。既存のオブジェクトに別の名前(参照)を付けるだけです。この挙動は、組み込み関数 id() を使うことで確認できます。 >>> L1 = [1,2,3,4] >>> L2 = L1 >>> id(L1) 185117137928 >>> id(L2) 185117137928 L1 と L2 のIDが同じであることから、両者が同一のオブジェクトを参照していることがわかります。つまり、どちらか一方を変更するともう一方にも影響が及びます。リストを