GetRangeメソッドを使うと、Listの一部分のみを複製したList(Listのサブセット)を作成することができます。
GetRangeメソッドを使ってListの一部分を切り出したListを作成する
using System;
using System.Collections.Generic;
class Sample {
static void Main()
{
var list = new List<string>() {"Alice", "Bob", "Charlie", "Dave", "Eve"};
// listのインデックス2から3つ分を切り出したListを作成する
var sublist = list.GetRange(2, 3);
Print(sublist);
}
static void Print(List<string> list)
{
foreach (var e in list) {
Console.Write("{0}, ", e);
}
Console.WriteLine();
}
}
実行結果
Charlie, Dave, Eve,
このメソッドによる複製では簡易コピーが行われるため、参照型を要素に持つListの場合は参照のみがコピーされます。 簡易コピーについてより詳しくはオブジェクトの複製で解説しています。
このメソッドは、部分配列を構成するArraySegment構造体と似ていますが、元の配列に対するビューとして動作するArraySegmentとは異なり、GetRangeメソッドが返すListは元のListを複製したものになります。 従って、元になったList・GetRangeメソッドによって取得したListに変更を加えても、もう一方に影響が及ぶことはありません。