Синтаксис инициализации коллекции в Visual Basic 2008?

Я пытаюсь определить, есть ли способ в Visual Basic 2008 (например, Express Edition, если это имеет значение) для инициализации встроенной коллекции, a la JavaScript или Python:

Dim oMapping As Dictionary(Of Integer, String) = {{1,"First"}, {2, "Second"}}

Я знаю, что Visual Basic 2008 поддерживает инициализацию массива, как это, но я не могу заставить его работать для коллекций... У меня синтаксис неправильный или он просто не реализован?

Ответ 2

Вот инициализаторы коллекции VB, используя ключевое слово От. (Начиная с Visual Studio 2010)

Список:

Dim list As New List(Of String) From {"First", "Second"}

Словарь:

Dim oMapping As New Dictionary(Of Integer, String) From {{1, "First"}, {2, "Second"}}

Ответ 3

Вы можете добиться этого с помощью String(). ToDictionary в этой однострочной сложной форме:

Dim kv As Dictionary(Of Integer, String) = _
        New String() {"1-first", "2-second", "3-third"}.ToDictionary( _
        Function(s) CInt(s.Substring(0, s.IndexOf("-"))), _
        Function(it) it.Substring(it.IndexOf("-") + 1))

Не очень элегантный способ, но полезный вообще.