C# でリストをコピーする

Muhammad Maisam Abbas 2024年2月16日
  1. C# で Linq を使用してリストをコピーする
  2. C# のリストコンストラクターを使用してリストをコピーする
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 に作成しました。このアプローチは、値のリストでのみ使用できます。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

関連記事 - Csharp List