簡體   English   中英

C#Dictionary ContainsKey / TryGetValue不起作用

[英]C# Dictionary ContainsKey/TryGetValue not working

我已經瀏覽了一段時間,並且在使用ContainsKey()TryGetValue()時看到了大量有關修改GetHashCode()和其他內容的引用 - 但所有這些問題和示例都使用了一些模糊的用戶特定鍵。

我有一個基本的Dictionary<long, object> 當嘗試ContainsKey()TryGetValue() ,它並不總是得到命中(當它應該)並繼續嘗試填充缺失的條目(因為在技術上應該如果是這種情況)。

你猜對了:它然后抱怨現有的密鑰,因為它存在。

那么為什么匹配基本的long鍵有問題呢?你如何使它表現出來?

編輯:代碼。 我嘗試過幾件事。 以他們最基本的形式:

public void Add(long id)
    {
        if (AreaDataDict.ContainsKey(id)) return;

        AreaData ad = new AreaData(id);
        ad.Load();
        AreaDataDict.Add(id, ad);
    }

也:

public void Add(long id)
{
    AreaData areaData;
    if (AreaDataDict.TryGetValue(id, out areaData)) return;

    AreaData ad = new AreaData(id);
    ad.Load();
    AreaDataDict.Add(id, ad);
}

編輯2:沒有發生任何密鑰更改。 除了添加未找到值之外,僅從中讀取數據。

使用ConcurrentDictionary是答案,幸好受到用戶454076的啟發。

暫無
暫無

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

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