2008-11-25 9 views
22

Est-il possible de créer et d'initialiser un objet System.Collections.Generic.Dictionary avec des paires clé/valeur String dans une instruction?Est-il possible d'initialiser un nouveau System.Collections.Generic.Dictionary avec des paires clé/valeur String?

Je pense le long des lignes du constructeur pour un tableau de chaînes ..

par exemple

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

Dans le cas où cela est se révèle être un syntactic sugar genre de chose, je préférerais une réponse que je peux utiliser en .Net 2.0 (Visual Studio 2005) et Visual Basic - si je suis curieux s'il est possible du tout, alors ne vous laissez pas rebuter; o)

Répondre

7

Je ne Je pense qu'il y a un moyen de faire son hors de la boîte dans VB.NET 2, mais vous pouvez étendre le dictionnaire générique pour le faire fonctionner comme vous le souhaitez.

L'application de la console ci-dessous illustre ceci:

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

Essayez cette syntaxe:

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

Mais cela peut nécessiter C# 3 (.NET 3.5)

+0

Il ne nécessite C# 3, mais il ne nécessite pas de .NET 3.5. –

77

Comme ceci:

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

C'est la réponse que je cherchais. :) – kamranicus

+8

Disponible à partir de VB.NET 10 –

+0

Deux jeux de parenthèses bouclés .... merci :) – twoleggedhorse

-1

Je sais que c'est un ancien poste, mais cette question revient souvent. Si

Voici une façon de déclarer & initialiser un dictionnaire dans une instruction:

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

Cela a déjà été déclaré en 2010 par jgauffin. Lire avant de poster;) –