2008-11-25 6 views
22

¿Es posible crear e inicializar un objeto System.Collections.Generic.Dictionary con pares de clave/valor String en una instrucción?¿Es posible inicializar un nuevo System.Collections.Generic.Dictionary con pares de clave/valor String?

estoy pensando a lo largo de las líneas del constructor para una matriz de cadenas ..

por ejemplo,

Private mStringArray As String() = {"String1", "String2", "etc"} 

En caso de que esto es resulta ser una especie de cosa syntactic sugar, preferiría una respuesta que puedo usar en .Net 2.0 (Visual Studio 2005), y Visual Basic - aunque estoy curiosa si es posible en absoluto así que no deje que eso te desanime; o)

Respuesta

7

I don' Creo que hay una manera de hacer t su out of the box en VB.NET 2, sin embargo, puede ampliar el diccionario genérico para que funcione de la forma que desee.

La aplicación de consola a continuación ilustra esto:

Imports System.Collections.Generic 

Module Module1 

    Sub Main() 

     Dim items As New FancyDictionary(Of Integer, String)(New Object(,) {{1, "First Item"}, {2, "Second Item"}, {3, "Last Item"}}) 
     Dim enumerator As FancyDictionary(Of Integer, String).Enumerator = items.GetEnumerator 

     While enumerator.MoveNext 
      Console.WriteLine(String.Format("{0} : {1}", enumerator.Current.Key, enumerator.Current.Value)) 
     End While 

     Console.Read() 

    End Sub 

    Public Class FancyDictionary(Of TKey, TValue) 
     Inherits Dictionary(Of TKey, TValue) 

     Public Sub New(ByVal InitialValues(,) As Object) 

      For i As Integer = 0 To InitialValues.GetLength(0) - 1 

       Me.Add(InitialValues(i, 0), InitialValues(i, 1)) 

      Next 

     End Sub 

    End Class 

End Module 
5

probar este sintaxis:

Dictionary<string, double> dict = new Dictionary<string, double>() 
{ 
    { "pi", 3.14}, 
    { "e", 2.71 } 
}; 

Pero eso puede requerir C# 3 (.NET 3.5)

+0

Se requiere C# 3, pero que no requiere .NET 3.5. –

77

De esta manera:

Dim myDic As New Dictionary(Of String, String) From {{"1", "One"}, {"2", "Two"}} 
+0

Esta es la respuesta que estaba buscando. :) – kamranicus

+8

Disponible a partir de VB.NET 10 –

+0

Dos conjuntos de llaves ... gracias :) – twoleggedhorse

-1

Sé que esto es una entrada antigua, pero esta pregunta surge con frecuencia. Si

Aquí es una forma de declarar & inicializar un diccionario en una declaración:

Private __sampleDictionary As New Dictionary(Of Integer, String) From 
{{1, "This is a string value"}, {2, "Another value"}} 
+1

Esto ya fue declarado en 2010 por jgauffin. Leer antes de publicar;) –

Cuestiones relacionadas