2009-11-03 6 views

Respuesta

54

Si se utiliza Visual Studio 2010 o posterior se debe utilizar la palabra clave FROM así:

Dim days = New Dictionary(Of Integer, String) From {{0, "string"}, {1, "string2"}} 

Ver: http://msdn.microsoft.com/en-us/library/dd293617(VS.100).aspx

Si es necesario utilizar una versión anterior de Visual Studio y se necesita hacer esto con frecuencia, puede heredar de la clase Dictionary e implementarlo usted mismo.

Puede parecer algo como esto:

Public Class InitializableDictionary 
    Inherits Dictionary(Of Int32, String) 

    Public Sub New(ByVal args() As KeyValuePair(Of Int32, String)) 
     MyBase.New() 
     For Each kvp As KeyValuePair(Of Int32, String) In args 
      Me.Add(kvp.Key, kvp.Value) 
     Next 
    End Sub 

End Class 
+0

que funciona. Gracias, – onsaito

+0

Esta respuesta es incorrecta ahora. –

+1

@BrianWebster gracias! respuesta actualizada para reflejar enfoques actuales y anteriores. – brendan

5

Lo que estamos viendo es una característica de C# denominado "inicializadores de colección". La característica también existía para VB, pero se cortó antes del lanzamiento de Visual Studio 2008. No le sirve de nada en este momento, pero se espera que esté disponible en Visual Studio 2010. Mientras tanto, tendrá que hacerlo. hazlo de la manera antigua — llama al método .Add() de tu nueva instancia.

25

esto no es posible versiones de Visual Basic anteriores a 2010.

En VB2010 y más tarde, puede utilizar la palabra clave FROM.

Dim days = New Dictionary(Of Integer, String) From {{0, "Sunday"}, {1, "Monday"}} 

Referencia

http://msdn.microsoft.com/en-us/library/dd293617(VS.100).aspx

+0

Como dice Joel Coehoorn en su respuesta, parece que la palabra clave FROM ha sido retirada de VB2008. Recuerdo fuertemente que lo he usado antes, pero tal vez solo probé los inizializadores de matrices. Bien. Aquí está el enlace de donde obtuve mi información: http://msdn.microsoft.com/en-us/library/dd293617(VS.100).aspx – Stefan

+0

Esto es lo que funcionó para mí, limpio y con referencia +1 –

Cuestiones relacionadas