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

C#でStringCollectionを配列の指定インデックスにコピーする方法


C#では、StringCollectionクラスのCopyToメソッドを使うことで、コレクション内のすべての文字列を、既存の文字列配列の任意のインデックス位置からコピーできます。本記事では、具体的なサンプルコードと実行結果をもとに、その使い方をわかりやすく解説します。

例1:配列の先頭(インデックス0)にコピーする

まずは基本となる例です。AddRangeメソッドでStringCollectionに要素を追加し、CopyToメソッドで配列の先頭からコピーしています。

using System;
using System.Collections.Specialized;
public class Demo {
    public static void Main(){
        StringCollection strCol = new StringCollection();
        String[] strArr = new String[] { "Tim", "Tom", "Sam", "Mark", "Katie", "Jacob"};
        Console.WriteLine("Elements...");
        for (int i = 0; i < strArr.Length; i++) {
            Console.WriteLine(strArr[i]);
        }
        strCol.AddRange(strArr);
        String[] arr = new String[strCol.Count];
        strCol.CopyTo(arr, 0);
        Console.WriteLine("Elements...after copying StringCollection to array");
        for (int i = 0; i < arr.Length; i++) {
            Console.WriteLine(arr[i]);
        }
    }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

Elements...
Tim
Tom
Sam
Mark
Katie
Jacob
Elements...after copying StringCollection to array
Tim
Tom
Sam
Mark
Katie
Jacob

例2:配列の中間のインデックスにコピーする

次に、コピー開始位置を配列の途中(この例ではインデックス3)に指定した例を見てみましょう。コピー先の配列サイズは10としており、インデックス3以降にStringCollectionの要素が格納されます。

using System;
using System.Collections.Specialized;
public class Demo {
    public static void Main(){
        StringCollection strCol = new StringCollection();
        String[] strArr = new String[] { "Tim", "Tom", "Sam", "Mark", "Katie", "Jacob", "David"};
        Console.WriteLine("Elements...");
        for (int i = 0; i < strArr.Length; i++) {
            Console.WriteLine(strArr[i]);
        }
        strCol.AddRange(strArr);
        String[] arr = new String[10];
        strCol.CopyTo(arr, 3);
        Console.WriteLine("Elements...after copying");
        for (int i = 0; i < arr.Length; i++) {
            Console.WriteLine(arr[i]);
        }
    }
}

出力結果

実行すると、インデックス0~2は空(null)のまま残り、インデックス3以降に要素が順番にコピーされていることが確認できます。

Elements...
Tim
Tom
Sam
Mark
Katie
Jacob
David
Elements...after copying

Tim
Tom
Sam
Mark
Katie
Jacob
David

CopyToメソッドのポイントまとめ

  • 構文:CopyTo(String[] array, int index) ― StringCollectionの全要素を、指定した配列の指定インデックス以降へコピーします。
  • 配列サイズの注意点:「開始インデックス + コレクションの要素数」以上のサイズを持つ配列が必要です。容量が不足している場合はArgumentExceptionなどの例外がスローされます。
  • 元のコレクションは無変更:コピー操作によって、元のStringCollectionの内容が変わることはありません。
  • nullの扱い:コピー先の配列に余裕がある場合、コピーされなかった領域はnull(未初期化)のまま残ります。
  1. C#のArray.Copy()メソッドで配列をコピーする方法

    C#のArray.Copy()メソッドは、その名の通り、ある配列の要素を別の配列へコピーするために使用されます。forループなどで手動的に要素を移し替えることなく、1行の呼び出しだけで配列間のデータ複製を実現できる、非常に便利なメソッドです。構文Array.Copy(src, dest, length);各パラメータの意味は以下の通りです。src:コピー元となる配列dest:コピー先の配列length:コピーする要素数なお、Array.Copy()メソッドには複数のオーバーロードが用意されており、コピー元・コピー先それぞれの開始インデックスを指定した部分コピーも可能です。ここでは、最も基本的な

  2. C#で配列をコピーする方法|Array.Copyメソッドの使い方を解説

    C#では、Array.Copyメソッドを使うことで、ある配列の一部(または全体)を別の配列へ簡単にコピーできます。この記事では、Array.Copyメソッドの基本的な使い方を、サンプルコードと実行結果付きでわかりやすく解説します。配列コピーの基本構造まず、コピー元となる元の配列を用意します。ここでは要素数10個の整数型配列を定義します。int[] n = new int[10]; /* n は 10 個の整数を持つ配列 */次に、コピー先となる新しい配列です。こちらは元の配列の一部を格納するため、要素数は5個にします。int[] m = new int[5]; /* m は 5 個の整数を持つ