Listの全部あるいは一部分だけを既存の配列にコピー(複写)したい場合は、CopyToメソッドを使うことができます。 ToArrayメソッドとは異なり、コピー先となる配列はあらかじめ用意しておく必要があります。
CopyToメソッドを使って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"})
' コピー先の配列を用意
Dim arr(4) As String
' Listのインデックス2から3要素分を配列のインデックス0以降にコピー
list.CopyTo(2, arr, 0, 3)
Print(arr)
' Listのインデックス0から2要素分を配列のインデックス3以降にコピー
list.CopyTo(0, arr, 3, 2)
Print(arr)
End Sub
Shared Sub Print(ByVal arr As String())
For Each e As String In arr
Console.Write("{0}, ", e)
Next
Console.WriteLine()
End Sub
End Class
実行結果
Charlie, Dave, Eve, , , Charlie, Dave, Eve, Alice, Bob,
このメソッドでは簡易コピーが行われるため、参照型を要素に持つListの場合は参照のみがコピーされます。 簡易コピーについてより詳しくはオブジェクトの複製で解説しています。
Listの全要素を配列にして扱いたい場合は前述のToArrayメソッドを使用することもできます。