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