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