53 votes

Comment insérer des valeurs dans un dictionnaire VB.NET lors de l'instanciation ?

Existe-t-il un moyen d'insérer des valeurs dans un dictionnaire VB.NET lorsque je le crée ? Je peux, mais je ne veux pas, faire dict.Add(int, "string") pour chaque élément.

En gros, je veux faire "Comment insérer des valeurs dans un dictionnaire C# lors de l'instanciation ?" avec VB.NET.

var dictionary = new Dictionary<int, string>
    {
        {0, "string"},
        {1, "string2"},
        {2, "string3"}
    };

65voto

brendan Points 15097

Si vous utilisez Visual Studio 2010 ou une version ultérieure, vous devez utiliser l'option FROM mot-clé comme celui-ci :

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

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

Si vous devez utiliser une version antérieure de Visual Studio et que vous avez besoin de faire cela fréquemment, vous pouvez simplement hériter de la classe Dictionary et l'implémenter vous-même.

Cela pourrait ressembler à quelque chose comme ça :

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

28voto

Stefan Points 7940

Ceci n'est pas possible pour les versions de Visual Basic antérieures à 2010.

Dans VB2010 et les versions ultérieures, vous pouvez utiliser la fonction FROM mot-clé.

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

Référence

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

5voto

Joel Coehoorn Points 190579

Ce que vous recherchez est une fonctionnalité de C# appelée "collection initializers". Cette fonctionnalité existait également pour VB, mais elle a été supprimée avant la sortie de Visual Studio 2008. Cela ne vous aide pas pour l'instant, mais elle devrait être disponible dans Visual Studio 2010. En attendant, vous devrez procéder à l'ancienne - appeler la fonction .Add() de votre nouvelle instance.

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