[英]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.