2008-09-17 2 views
20

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

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

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

+0

Для будущих искателей два решения предусмотрены здесь http://stackoverflow.com/questions/2629076/inline-list-initialization-in-vb-net – LosManos 2014-10-17 17:04:21

ответ

19

Visual Basic 9.0 пока не поддерживается. Однако Visual Basic 10.0will.

+4

* вздох * ... это ламе – 2009-05-06 16:36:59

+0

Хм, вот чего я боялся. Благодарю. – 2011-01-20 16:47:31

-1

Вы можете достичь его с помощью 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)) 

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

4

Адрес VB collection initializersОт ключевого слова. (Начиная с 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"}}