web-dev-qa-db-ja.com

インスタンス化時にVB.NET辞書に値を挿入する方法は?

VB.NET辞書を作成するときに値を挿入する方法はありますか?できますが、したくないのですが、各項目に対してdict.Add(int、 "string")を実行します。

基本的に、私はVB.NETで "インスタンス化時にC#辞書に値を挿入する方法?" を実行したいと考えています。

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

Visual Studio 2010以降を使用している場合は、次のようにFROMキーワードを使用する必要があります。

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

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

以前のバージョンのVisual Studioを使用する必要があり、これを頻繁に実行する必要がある場合は、Dictionaryクラスから継承して、自分で実装できます。

次のようになります。

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

これは2010より前のバージョンのVisual Basicではありません。

VB2010以降では、FROMキーワードを使用できます。

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

参照

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

28
Stefan

あなたが見ているのは「コレクション初期化子」と呼ばれるC#の機能です。この機能はVB=にも存在しましたが、Visual Studio 2008のリリース前に削除されました。現在のところ役に立ちませんが、これはVisual Studio 2010で利用可能になる予定です。それまでは、昔ながらの方法で行う必要があります。新しいインスタンスの.Add()メソッドを呼び出します。

5
Joel Coehoorn