簡體   English   中英

在C#中的通用詞典中添加不起作用

[英]Adding is not Working in Generic Dictionary in C#

我有一本通用詞典

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方法添加到通用詞典中,則程序運行良好。

您是從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);
    }
}

嘗試將代碼更改為

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

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

覆蓋字典時,無需實現后備存儲。

但是,如果您希望實現自己的字典,請查看IDictionary接口

表示鍵/值對的通用集合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM