Listの全部あるいは一部分だけを既存の配列にコピー(複写)したい場合は、CopyToメソッドを使うことができます。 ToArrayメソッドとは異なり、コピー先となる配列はあらかじめ用意しておく必要があります。
CopyToメソッドを使ってListの一部を配列にコピーする
using System;
using System.Collections.Generic;
class Sample {
static void Main()
{
var list = new List<string>() {"Alice", "Bob", "Charlie", "Dave", "Eve"};
// コピー先の配列を用意
var arr = new string[5];
// Listのインデックス2から3要素分を配列のインデックス0以降にコピー
list.CopyTo(2, arr, 0, 3);
Print(arr);
// Listのインデックス0から2要素分を配列のインデックス3以降にコピー
list.CopyTo(0, arr, 3, 2);
Print(arr);
}
static void Print(string[] arr)
{
foreach (var e in arr) {
Console.Write("{0}, ", e);
}
Console.WriteLine();
}
}
実行結果
Charlie, Dave, Eve, , , Charlie, Dave, Eve, Alice, Bob,
このメソッドでは簡易コピーが行われるため、参照型を要素に持つListの場合は参照のみがコピーされます。 簡易コピーについてより詳しくはオブジェクトの複製で解説しています。
Listの全要素を配列にして扱いたい場合は前述のToArrayメソッドを使用することもできます。