2008-09-17 6 views
20

Ich versuche, wenn zu bestimmen, es in Visual Basic 2008 ist ein Weg (Express Edition, wenn diese Fragen) Inline-Sammlung Initialisierung zu tun, a la JavaScript oder Python:Auflistungsinitialisierungssyntax in Visual Basic 2008?

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

Ich weiß, Visual Basic 2008 unterstützt Feldinitialisierung so, aber ich kann nicht scheinen, dass es für Sammlungen funktioniert ... Habe ich die Syntax falsch, oder ist es einfach nicht implementiert?

+0

Für zukünftige Forscher, zwei Lösungen werden hier bereitgestellt http://stackoverflow.com/questions/2629076/inline-list-initialization-in-vb-net – LosManos

Antwort

-1

Sie erreichen es String() verwendet ToDictionary in diesem einzeiligen komplizierte Form.

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)) 

Nicht sehr elegante Art und Weise, aber überhaupt nützlich.

4

Hier sind VB collection initializers mit der Von Stichwort. (Beginnend mit Visual Studio 2010)

Liste:

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

Wörterbuch:

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

Ist dies nur für VB.NET Version 10 und höher? Entspricht welcher Version von Visual Studio? –