2008-09-17 7 views
20

Je suis en train de déterminer s'il y a un moyen dans Visual Basic 2008 (Express Edition si cela importe) pour faire l'initialisation de la collection en ligne, un JavaScript la ou Python:Syntaxe d'initialisation de collection dans Visual Basic 2008?

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

Je sais que Visual Basic 2008 prend en charge l'initialisation du tableau comme ça, mais je n'arrive pas à le faire fonctionner pour les collections ... Ai-je mal la syntaxe, ou est-ce que ce n'est pas implémenté?

+0

Pour les chercheurs futurs, deux solutions sont fournies ici http://stackoverflow.com/questions/2629076/inline-list-initialisation-in-vb-net – LosManos

Répondre

-1

Vous pouvez y parvenir en utilisant String() ToDictionary sous cette forme complexe d'une ligne.

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

Pas moyen très élégant mais utile du tout.

4

Voici VB collection initializers en utilisant le mot-clé De. (A partir de Visual Studio 2010)

Liste:

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

Dictionnaire:

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

Est-ce uniquement pour VB.NET versions 10 et ultérieures? Correspondant à quelle version de Visual Studio? –