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