1

私は一般的な辞書を持っています

class GenericDictionary<TKey, TValue> : Dictionary<TKey, TValue>
{
    Dictionary<TKey, TValue> dictionary = new Dictionary<TKey,TValue>();

    public void AddToGenericDictionary(TKey key, TValue value)
    {
        dictionary.Add(key, value);
    }
}

クラスを宣言しました

class GenericInput1
 {
     public string Name { get; set; }
 }

メイン関数で、GenericInput1 クラスを初期化し、GenericDIctionary に追加しました

class Program
{
    static void Main(string[] args)
    {
         GenericInput1 inp1 = new GenericInput1 { Name = "An" };
         GenericInput1 inp2 = new GenericInput1 { Name = "B" };
         GenericInput1 inp3 = new GenericInput1 { Name = "C" };

         GenericDictionary<int, GenericInput1> genericIntKey = new GenericDictionary<int, GenericInput1>();

         genericIntKey.AddToGenericDictionary(1, inp1);
         genericIntKey.AddToGenericDictionary(2, inp2);
         genericIntKey.AddToGenericDictionary(3, inp3);

         GenericInput1 result2 = genericIntKey[3];
         Console.WriteLine(result2.Name);
    }
}

プログラムを実行すると、次の例外が発生します。

未処理の例外: System.Collections.Generic.KeyNotFoundException: 指定されたキーがディクショナリに存在しませんでした。

しかし、組み込みの Add メソッドを使用して一般的な辞書に追加しようとすると、プログラムはうまく動作します。

4

2 に答える 2

2

から継承しているため、クラスにDictionaryバッキング フィールドは必要ありません。Dictionaryしたがって、それを削除して親辞書を使用します。

class GenericDictionary<TKey, TValue> : Dictionary<TKey, TValue>
{
    Dictionary<TKey, TValue> dictionary = new Dictionary<TKey,TValue>();

    public void AddToGenericDictionary(TKey key, TValue value)
    {
        dictionary.Add(key, value);
    }
}

class GenericDictionary<TKey, TValue> : Dictionary<TKey, TValue>
{
    public void AddToGenericDictionary(TKey key, TValue value)
    {
        this.Add(key, value);
    }
}
于 2013-08-11T09:51:26.210 に答える
0

コードを次のように変更してみてください

class GenericDictionary<TKey, TValue> : Dictionary<TKey, TValue>
{

    public void AddToGenericDictionary(TKey key, TValue value)
    {
        this.Add(key, value);
    }
}

ディクショナリをオーバーライドする場合、バッキング ストアを実装する必要はありません。

しかし、独自の Dictionary を実装したい場合は、IDictionary Interfaceをご覧ください。

キーと値のペアの汎用コレクションを表します。

于 2013-08-11T09:50:58.363 に答える