83 votes

Ajouter des clés/valeurs au dictionnaire lors de la déclaration

Très facile aujourd'hui, je pense. En C#, c'est:

Dictionary dict = new Dictionary() { { "", "" } };

Mais en vb, ce qui suit ne fonctionne pas.

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

Je suis assez sûr qu'il y a un moyen de les ajouter à la déclaration, mais je ne suis pas sûr comment. Et oui, je veux les ajouter à la déclaration, pas à un autre moment. :) Donc j'espère que c'est possible. Merci à tous.

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) {{"",""}}

135voto

Darin Dimitrov Points 528142

Ceci est possible en VB.NET 10:

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

Malheureusement, de ce que je me souviens, VS 2008 utilise le compilateur VB.NET 9 qui ne prend pas en charge cette syntaxe.

Et pour ceux qui pourraient être intéressés, voici ce qui se passe en coulisses (C#):

Dictionary VB$t_ref$S0 = new Dictionary();
VB$t_ref$S0.Add(1, "Test1");
VB$t_ref$S0.Add(2, "Test1");
Dictionary dict = VB$t_ref$S0;

0 votes

Bien! Je me demande comment ça se comporte, est-ce qu'il construit d'abord le tableau bidimensionnel, puis le copie dans le dictionnaire?

0 votes

Dern. Donc tu dis que puisque j'utilise VS2008 je ne peux pas le faire? Cela pue.

3 votes

Oui, un peu malodorant :-) Il est temps de mettre à niveau.

17voto

Hans Passant Points 475940

C'est beaucoup la même chose, utilisez le mot-clé From :

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

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

14voto

Mike Points 99

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

C#:

private static readonly Dictionary dics = new Dictionary
{
    {"sizes", new string[]  {"petit", "moyen", "grand"}},
    {"colors", new string[]  {"noir", "rouge", "marron"}},
    {"shapes", new string[]  {"cercle", "carré"}}
};

VB:

Private Shared ReadOnly dics As New Dictionary(Of String, String()) From {
 {"sizes", New String() {"petit", "moyen", "grand"}},
 {"colors", New String() {"noir", "rouge", "marron"}},
 {"shapes", New String() {"cercle", "carré"}}}

Cool haa :)

1voto

vulkanino Points 5855

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X