2010-09-22 5 views
50

Très facile aujourd'hui, je pense. En C#, son:Ajouter des clés/valeurs à Dictionnaire à la déclaration

Dictionary<String, String> dict = new Dictionary<string, string>() { { "", "" } }; 

Mais dans vb, ce qui suit ne fonctionne pas. Je suis assez sûr qu'il y a un moyen de les ajouter à la déclaration, mais je ne suis pas sûr de savoir comment. Et oui, je veux les ajouter à la déclaration, pas n'importe quand. :) J'espère que c'est possible. Merci tout le monde.

J'ai aussi essayé:

Public dict As Dictionary(Of String, String) = New Dictionary(Of String, String) ({"",""}) 

Et ...

Public dict As Dictionary(Of String, String) = New Dictionary(Of String, String) {("","")} 

Et ...

Public dict As Dictionary(Of String, String) = New Dictionary(Of String, String) {{"",""}} 

Répondre

81

Ceci est possible en VB.NET 10:

Dim dict = New Dictionary(Of Integer, String) From {{ 1, "Test1" }, { 2, "Test1" }} 

Malheureusement IIRC VS 2008 utilise le compilateur VB.NET 9 qui ne supporte pas cette syntaxe.

Et pour ceux qui pourraient être intéressés ici est ce qui se passe dans les coulisses (C#):

Dictionary<int, string> VB$t_ref$S0 = new Dictionary<int, string>(); 
VB$t_ref$S0.Add(1, "Test1"); 
VB$t_ref$S0.Add(2, "Test1"); 
Dictionary<int, string> dict = VB$t_ref$S0; 
+0

bien! Je me demande comment cela se comporte, construit-il d'abord le tableau à deux dimensions, puis il copie dans le dictionnaire? – vulkanino

+0

Dern. Donc, vous dites que puisque j'utilise VS2008 je ne peux pas le faire? Ça puait. – XstreamINsanity

+1

Yeap, un peu puante :-) Il est temps de mettre à niveau. –

0

Il n'y a pas constructeur de prendre un KeyValuePair pour un dictionnaire.

8

Il est la même, utilisez le mot clé FROM:

Dim d As New Dictionary(Of String, String) From {{"", ""}} 

Cependant, cela nécessite version 10 du langage, disponible dans VS2010.

7

Voici une traduction cool: Vous pouvez également avoir un dictionnaire générique de chaînes et tableau de chaînes.

C#:

private static readonly Dictionary<string, string[]> dics = new Dictionary<string, string[]> 
     { 
      {"sizes", new string[] {"small", "medium", "large"}}, 
      {"colors", new string[] {"black", "red", "brown"}}, 
      {"shapes", new string[] {"circle", "square"}} 
     }; 

VB:

Private Shared ReadOnly dics As New Dictionary(Of String, String()) From { _ 
{"sizes", New String() {"small", "medium", "large"}}, _ 
{"colors", New String() {"black", "red", "brown"}}, _ 
{"shapes", New String() {"circle", "square"}}} 

cool :) haa

Questions connexes