簡體   English   中英

在Dictionary ContainsKey檢查中找不到ArgumentException

[英]ArgumentException not found in Dictionary ContainsKey check

我有這樣的代碼:

if (!likeDict.ContainsKey(s))
{
    likeDict.Add(s, s);
}

而且我不斷收到一個錯誤消息,即已添加具有相同密鑰的項目。 我以為ContainsKey是對此的檢查,這就是發生錯誤的地方,而不是添加行。 我誤解了ContainsKey嗎?

聽起來您好像在多線程方案中使用字典。 在這種情況下,可以切換到使用ConcurrentDictionary<TKey, TValue> ,它提供以下TryAdd方法:

bool added = likeDict.TryAdd(s, s);

如果您將此字典用作等效對象的緩存,則還可以使用GetOrAdd方法:

var value = likeDict.GetOrAdd(s, s);
bool added = object.ReferenceEquals(value, s);

如果這是靜態/共享資源(如先前注釋中所述),則可能會發生錯誤。 在這種情況下,請應用lock語句。

希望這會有所幫助。 我最好的AB

暫無
暫無

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

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