web-dev-qa-db-fra.com

Comment insérer des valeurs dans le 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.

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

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

Si vous utilisez Visual Studio 2010 ou version ultérieure, vous devez utiliser le mot clé FROM comme ceci:

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 devez le faire fréquemment, vous pouvez simplement hériter de la classe Dictionary et l'implémenter vous-même.

Cela pourrait ressembler à ceci:

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
63
brendan

Il ne s'agit pas de versions possibles de Visual Basic antérieures à 2010.

Dans VB2010 et versions ultérieures, vous pouvez utiliser le mot clé FROM.

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

28
Stefan

Ce que vous regardez est une fonctionnalité de C # appelée "initialiseurs de collection". La fonctionnalité existait également pour VB, mais a été supprimée avant la sortie de Visual Studio 2008. Cela ne vous aide pas pour le moment, mais cela devrait être disponible dans Visual Studio 2010. En attendant, vous devrez le faire à l'ancienne - appelez la méthode .Add() de votre nouvelle instance.

5
Joel Coehoorn