【发布时间】:2013-11-29 10:44:06
【问题描述】:
有点初级的问题,但这里是......
我经常使用字典来存储有关其他对象的辅助信息:
Dictionary<Person, int> timesAccessed;
Person p = // ...;
if (timesAccessed[p] == 0)
// ...
假设我的“Person”类看起来像:
class Person
{
public string Name;
}
请注意,我还没有在Person 上实现Equals、GetHashCode 等。字典仍然能够使用这样的键进行快速查找吗?由于Person 是一个类,而p 是引用,我可以想象它使用内存地址/一些内部索引作为哈希码,但我想确保它没有诉诸线性扫描字典。
【问题讨论】:
-
测试很容易:创建一些 Person 对象并自己调用 GetHashCode()。它们会有所不同。
-
这与@gdoron 所说的相反。所有实例都将给出单独的哈希码(即使
Name具有相同的值 - 如果您想将包含相同数据的对象视为相等,这可能会使默认生成的哈希码成为一个糟糕的选择)
标签: c# dictionary