2011-02-09 6 views
1

.NETディクショナリに基づいて独自の辞書クラスを作成しました。VB.NET:Dictionary.Item(TKey)をオーバーロードする方法

今、Item()メソッドをオーバーロードしたいと思います。これは、次のコードで正常に動作します。

Public Overloads Property Item(ByVal key As TKey) As TValue 
    Get 
     Return Nothing 
    End Get 
    Set(ByVal value As TValue) 
     MyBase.Item(key) = value 
    End Set 
End Property 

私は今Nothingを取得するためにDictionary.Item(Key)を使用します。しかし、私が辞書(キー)構文を使用するとき、私は値を得て、何も得ません。

Dictionary.Item(Key)とDictionary(Key)を正しくオーバーロードするにはどうすればよいですか?

あなたは トーベン

答えて

3

プロパティは、インデクサ構文を有効にするDefaultをマークする必要がありますありがとうございました。

Public Overloads Default Property Item(ByVal key As TKey) As TValue 
    Get 
     Return Nothing 
    End Get 
    Set(ByVal value As TValue) 
     MyBase.Item(key) = value 
    End Set 
End Property 
+0

とても簡単です...ありがとうございます:) – Torben

+0

* Overloads *は巨大な赤旗です。はい、OPが実際にDictionaryを継承しているときに警告を表示しません。いいえ、それは実際にはうまくいかないでしょう、それはベースのインデクサーを陰にします。 –

+0

@Hans私は 'TKey'がベースのキーとは区別されていると思っていましたが、反射にはもちろんナンセンスです。 –

関連する問題