初期容量を指定してListのインスタンスを作成しても、その数の要素数が確保されるわけではありません。 初期容量として指定した値に関わらず、インスタンスを作成した直後の要素数は0となります。
Listの初期容量を指定してもその要素数は確保されない
Imports System
Imports System.Collections.Generic
Class Sample
Shared Sub Main()
' 初期容量に100を指定してListを作成
Dim list As New List(Of Integer)(100)
' CountとCapacityを表示
Console.WriteLine("Count = {0}", list.Count)
Console.WriteLine("Capacity = {0}", list.Capacity)
' インデックス50の要素を設定
' (現在の要素数は0で、インデックス50は範囲外であるため、例外が発生する)
list(50) = 0
End Sub
End Class
実行結果
Count = 0 Capacity = 100 ハンドルされていない例外: System.ArgumentOutOfRangeException: インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。 パラメーター名: index 場所 System.Collections.Generic.List`1.set_Item(Int32 index, T value) 場所 Sample.Main()