Вставить в список VB

У меня есть мой код 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

В требовании, которое я имею, мне нужно вставить значения по определенным индексам, но это может быть случайная вставка. Я верю, что если я установлю емкость списка, я смогу вставить значения в индекс в пределах емкости.

Есть идеи, что мне не хватает?

1 ответ

Решение

(7) в вашем конструкторе указывается "Начальная емкость" Списка, а не инициализируется 8 элементов. Смотрите MSDN для деталей

Я думаю, что ваш лучший вариант:

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 - плохой выбор.

Другие вопросы по тегам