在VB列表中插入

时间:2014-11-27 11:08:21

标签: .net vb.net generics indexing initialization

我的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的容量,我应该能够在索引容量中插入值。

知道我缺少什么吗?

1 个答案:

答案 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是一个糟糕的选择。