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

C#でCollectionの要素を配列にコピーする方法(CopyToメソッドの使い方)

C#の Collection<T> クラスには、コレクション内のすべての要素を既存の配列へコピーするための CopyTo メソッドが用意されています。第1引数にコピー先の配列、第2引数にコピーを開始する配列のインデックスを指定するだけで、簡単に要素を配列へ移し替えられます。

CopyToメソッドの基本構文

public void CopyTo(T[] array, int index);
  • array:コピー先となる1次元配列
  • index:コピーを開始する配列内の位置(0から始まるインデックス)

例1:インデックス2からコピーする

まずは、8つの要素を持つ文字列コレクションを、配列のインデックス2以降へコピーする例です。

using System;
using System.Collections.ObjectModel;
public class Demo {
    public static void Main(){
        Collection<string> col = new Collection<string>();
        col.Add("One");
        col.Add("Two");
        col.Add("Three");
        col.Add("Four");
        col.Add("Five");
        col.Add("Six");
        col.Add("Seven");
        col.Add("Eight");
        Console.WriteLine("Collection....");
        foreach(string str in col){
            Console.WriteLine(str);
        }
        string[] strArr = new string[10];
        col.CopyTo(strArr, 2);
        Console.WriteLine("\nArray...");
        foreach(string str in strArr){
            Console.WriteLine(str);
        }
    }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。コピー開始位置がインデックス2のため、配列の先頭2つ分(インデックス0と1)は空のままになっている点に注目してください。

Collection....
One
Two
Three
Four
Five
Six
Seven
Eight

Array...

One
Two
Three
Four
Five
Six
Seven
Eight

例2:インデックス3からコピーする

続いて、コピー開始位置をインデックス3に変更した例を見てみましょう。5つの要素を持つコレクションを用意し、CopyTo の第2引数に「3」を渡しています。

using System;
using System.Collections.ObjectModel;
public class Demo {
    public static void Main(){
        Collection<string> col = new Collection<string>();
        col.Add("One");
        col.Add("Two");
        col.Add("Three");
        col.Add("Four");
        col.Add("Five");
        Console.WriteLine("Collection....");
        foreach(string str in col){
            Console.WriteLine(str);
        }
        string[] strArr = new string[10];
        col.CopyTo(strArr, 3);
        Console.WriteLine("\nArray...");
        foreach(string str in strArr){
            Console.WriteLine(str);
        }
    }
}

出力結果

実行すると、次のように表示されます。

Collection....
One
Two
Three
Four
Five

Array...

One
Two
Three
Four
Five

CopyToメソッド使用時の注意点

  • コピー先の配列は、「開始インデックス + コレクションの要素数」以上のサイズが必要です。容量が不足すると ArgumentException がスローされます。
  • 配列が null の場合や、指定したインデックスが配列の範囲外の場合にも例外が発生します。
  • コピーを実行しても、元のコレクションの内容が変更されることはありません。
  1. C#でListコレクションから要素を取得する方法

    C#では、List<T>コレクションに格納した要素へ、インデックスを指定するだけで簡単にアクセスできます。本記事では、Listから要素を取得する基本的な方法を、具体的なコード例とともに解説します。 Listへの要素の追加 まず、List<int>型のコレクションを作成し、Addメソッドを使って整数の要素を追加します。 List<int> list = new List<int>(); list.Add(20); list.Add(40); list.Add(60); list.Add(80); インデックスによる要素の取得 リストから特定の

  2. 【Java入門】Collections.shuffle()でコレクションの要素をシャッフルする方法

    この記事では、Javaでコレクション(List)の要素をシャッフル(ランダムに並び替え)する方法について詳しく解説します。 Collectionフレームワークは、複数のオブジェクトを格納・操作するための統一的なアーキテクチャを提供する仕組みです。Java Collections Frameworkを利用すれば、検索、ソート、挿入、操作、削除といった、データに対するほぼすべての操作を実現できます。 要素のシャッフルには、java.util.Collectionsクラスが提供するshuffle()メソッドを使用します。第2引数にRandomインスタンスを渡すことで、乱数生成の挙動を制御することも可