0

こんにちは、この C# コードを VB に変換しようとしています。

class MultiValueDictionary<TKey, TValue> : Dictionary<TKey, List<TValue>>
{

   public void Add(TKey key, TValue value)
   {
      if(!ContainsKey(key))
         Add(key, new List<TValue>());
      this[key].Add(value);
   }
}

結果は次のようになります。

Class MultiValueDictionary(Of TKey, TValue)
    Inherits Dictionary(Of TKey, List(Of TValue))

    Public Sub Add(key As TKey, value As TValue)
        If Not ContainsKey(key) Then
            Add(key, New List(Of TValue)())
        End If
        Me(key).Add(value)
    End Sub
End Class

しかし、次の行でエラーが発生します。

Add(key, New List(Of TValue)())

タイプ 'System.Collections.Generic.List(Of TValue)' の値を 'TValue' に変換できません。

TKey TValue 表記についてはあまり明確ではありません。誰かがこのエラーが私に何を伝えているのか説明できますか? 代わりに何と読むべきですか?

前もって感謝します

4

2 に答える 2

1

代わりに、基本クラスでメソッドを明示的に呼び出してみてください。

MyBase.Add(key, New List(Of TValue)())

あなたが使用したコード変換ユーティリティは、VBの嫌悪感を許しません:)

于 2012-12-14T05:30:45.243 に答える
1

まず、それ自体ではなくインターフェイスを継承することをお勧めしますlist

... : Dictionary<TKey, IList<TValue>>

第二に、あなたの方法のAdd呼び出しはそれ自体を呼び出しているようです。base' メソッドを呼び出してみてください。

MyBase.Add(key, New List(Of TValue)())

第三に、なぜあなただ​​けを使わないのですLookup<,>か?要素をキーでグループ化するのはとても簡単です。

于 2012-12-14T05:32:58.520 に答える