C# でリストをコピーする
このチュートリアルでは、C# でリストをコピーする方法を紹介します。
C# で Linq を使用してリストをコピーする
Linq は、C# のデータ構造に対して SQL のようなクエリを実行できます。事前定義された item.Clone(/)
メソッドで Linq を使用して、リストのコピーを作成できます。以下の例を参照してください。
using System;
using System.Collections.Generic;
using System.Linq;
namespace copy_a_list {
static class Extensions {
public static List<T> Clone<T>(this List<T> listToClone)
where T : ICloneable {
return listToClone.Select(item => (T)item.Clone()).ToList();
}
}
class Program {
static void Main(string[] args) {
List<string> slist = new List<string> { "ABC", "DEF", "GHI" };
List<string> tlist = slist.Clone();
foreach (var t in tlist) {
Console.WriteLine(t);
}
}
}
}
出力:
ABC
DEF
GHI
汎用リストで使用する拡張関数 Clone()
を作成しました。Clone()
関数は、item.Clone()
関数を使用してリスト内の各要素の個別のコピーを作成し、C# の ToList()
関数を使用してリストの形式で結果を返します。main 関数では、文字列のリスト slist
を初期化し、それを別の文字列のリスト tlist
に複製しました。このアプローチは、値のリストと参照のリストの両方で使用できます。
C# のリストコンストラクターを使用してリストをコピーする
リストのコピーを作成するもう 1つの簡単な方法は、C# でリストコンストラクターを使用することです。前のリストを新しいリストのコンストラクターに渡して、前のリストのコピーを作成できます。次のコード例は、C# のリストコンストラクターを使用してリストの個別のコピーを作成する方法を示しています。
using System;
using System.Collections.Generic;
using System.Linq;
namespace copy_a_list {
class Program {
static void method2() {}
static void Main(string[] args) {
List<string> slist = new List<string> { "ABC", "DEF", "GHI" };
List<string> tlist = new List<string>(slist);
foreach (var t in tlist) {
Console.WriteLine(t);
}
}
}
}
出力:
ABC
DEF
GHI
このコードは、以前のアプローチよりもはるかに単純で理解しやすいものです。上記のコードでは、tlist
のコンストラクターの引数として slist
を渡すことにより、リスト slist
の別のコピーを tlist
に作成しました。このアプローチは、値のリストでのみ使用できます。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn