繁体   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