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

C#でリストを複製・コピーする方法:CopyToメソッドの使い方を解説

C#でリスト(List)を複製またはコピーするには、いくつかの方法があります。本記事では、CopyTo()メソッドを使ってリストを配列へコピーする基本的な手法を中心に、わかりやすく解説します。

コピー元のリストを作成する

まず、コピー元となるリストを用意します。

List<string> myList = new List<string>();
myList.Add("One");
myList.Add("Two");

CopyTo()メソッドで配列へコピーする

次に、文字列型の配列を宣言し、CopyTo()メソッドを呼び出してリストの内容を配列へコピーします。

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

注意: コピー先の配列は、リストの要素数以上のサイズを持っている必要があります。サイズが不足している場合、ArgumentExceptionがスローされるので気をつけてください。

完全なサンプルコード

以下に、リストを一次元配列へコピーする完全なコード例を示します。

using System;
using System.Collections.Generic;
using System.Linq;

public class Demo {
    public static void Main() {
        List<string> myList = new List<string>();
        myList.Add("One");
        myList.Add("Two");
        myList.Add("Three");
        myList.Add("Four");

        Console.WriteLine("最初のリスト...");
        foreach(string value in myList) {
            Console.WriteLine(value);
        }

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

        Console.WriteLine("コピー後...");
        foreach(string value in arr) {
            Console.WriteLine(value);
        }
    }
}

実行結果

最初のリスト...
One
Two
Three
Four
コピー後...
One
Two
Three
Four

リストを別のリストとして複製する方法

リストをそのまま別のリストとして複製したい場合は、以下の2つの方法が便利です。

方法1:コンストラクタを使う

List<string> newList = new List<string>(myList);

方法2:ToList()メソッドを使う

List<string> newList = myList.ToList();

どちらの方法でも、元のリストと同じ要素を持つ新しいリストが作成されます。ただし、これらはすべて浅いコピー(シャローコピー)である点に注意してください。参照型の要素を含むリストでは、新しいリストの各要素は元のオブジェクトと同じ実体を指します。独立した深いコピーが必要な場合は、各要素に対して個別に複製処理を行う必要があります。

  1. 連結リストを反転するCプログラムの解説【反復法・再帰法の2通り】

    この記事では、連結リスト(Linked List)が与えられたときに、それを反転するプログラムの作成方法を解説します。 作成するプログラムは、与えられた連結リストのリンクの向きを逆にし、反転後の連結リストを返します。 連結リストとは 連結リストとは、データ項目を格納するノードがリンクで順につながったデータ構造です。各ノードには、次のノードへの接続(ポインタ)が含まれています。 連結リストの反転とは 「連結リストの反転」とは、リスト内のリンクの向きをすべて逆向きにして、新しい連結リストを作る操作のことです。反転後は、元のリストの先頭ノードが末尾ノードになり、元の末尾ノードが新しい先頭(head)

  2. C++でグラフの隣接リストを実装する方法:サンプルコード付きで解説

    グラフの隣接リストは、連結リスト(リンクリスト)を用いたグラフの表現方法の一つです。この表現では、リストを要素とする配列を使用し、その配列のサイズは V(頂点の総数)となります。言い換えれば、V個の異なるリストを格納するための配列を用意することになります。各リストの先頭が頂点 u に対応しており、そのリストには「頂点 u に隣接するすべての頂点」が格納されます。 隣接リスト表現の計算量 無向グラフの場合、必要な記憶領域は O(V + 2E)、有向グラフの場合は O(V + E) となります。 辺の数が増加すると、それに伴って必要なメモリ量も増えていきます。そのため、辺の密度が低い(スパースな