我的VB代码如下 -
Dim vals As New List(Of String)(7)
vals.Insert (0 , "A")
vals.Insert (1 , "B")
vals.Insert (2 , "C")
vals.Insert (5 , "E") 'Here I receive error as Index must be within the bounds of the List.
'Parameter name: index
在我的要求中,我需要在特定索引处插入值,但它可以是随机插入。我相信,如果我设置List的容量,我应该能够在索引容量中插入值。
知道我缺少什么吗?
答案 0 :(得分:1)
构造函数中的(7)
指定了列表的“初始容量”,而不是初始化8个元素。 See MSDN for details
我认为你最好的选择是:
1 - 如果您的“数组”大小不会改变(或不会经常更改),那么请使用数组
Dim vals As String() = New String(7) {}
'Dim vals(7) As String also works but is not best practise
vals(0) = "A"
vals(3) = "D"
'etc.
2 - 初始化与构造函数
在同一行中的项目Dim vals As New List(Of String)(Enumerable.Repeat("", 8))
vals(0) = "A"
vals(3) = "D"
'etc.
在我看来,如果你想在任意索引处分配值,那么使用List是一个糟糕的选择。