我已经环顾了一段时间,看到很多关于修改GetHashCode()
和玩的参考资料ContainsKey()
和TryGetValue()
- 但所有这些问题和示例都与一些模糊的用户特定键有关。
我有一个基本的Dictionary<long, object>
. 当尝试使用ContainsKey()
orTryGetValue()
时,它并不总是会受到打击(当它应该受到打击时)并继续尝试填充丢失的条目(如果是这种情况,它在技术上应该如此)。
你猜对了:它会抱怨现有的密钥,因为它确实存在。
那么为什么它在匹配基本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:没有发生关键变化。除了在未找到值时添加之外,仅从中读取数据。