2008-09-17 11 views
20

Estoy tratando de determinar si hay una manera en Visual Basic 2008 (edición expreso si lo que importa) para hacer la inicialización de recogida en línea, al estilo de JavaScript o Python:¿Sintaxis de inicialización de colección en Visual Basic 2008?

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

sé Visual Basic 2008 es compatible con la inicialización del campo así, pero parece que no puedo hacer que funcione para colecciones ... ¿Tengo la sintaxis incorrecta, o simplemente no está implementada?

+0

Para los futuros buscadores, se proporcionan dos soluciones aquí http://stackoverflow.com/questions/2629076/inline-list-initialization-in-vb-net – LosManos

Respuesta

-1

Puede lograrlo usando String() ToDictionary en esta forma intrincada de una línea:.

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

No es muy elegante manera pero útil en absoluto.

4

Aquí están VB collection initializers usando la De palabra clave. (A partir de Visual Studio 2010)

lista:

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

Diccionario:

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

¿Es esto solo para VB.NET versión 10 y posterior? ¿Correspondiente a qué versión de Visual Studio? –

Cuestiones relacionadas