|
|
1
19
这是一个从Java,IMO复制过来的设计错误。 在我的完美世界里:
相等(以及散列)通常会导致继承层次结构中出现问题—只要您始终可以指定要使用的比较类型(通过
啊,好吧。当我这么做的时候,数组协方差是另一个平台错误。如果你想在C语言错误,我可以开始另一个小咆哮,如果你喜欢;)(到目前为止,这仍然是我最喜欢的语言,但有些事情我希望能有所不同。) blogged about this 另外,顺便说一句。 |
|
|
2
3
我认为这不是一个真实的说法。许多类经常被用作哈希表中的键,对象引用本身也经常被使用。在System.Object中存在GetHashCode的默认实现意味着任何对象都可以不受限制地用作键。 这似乎比在对象上强制使用自定义接口要好得多,只是为了能够散列它们。您永远不知道何时需要在哈希集合中使用对象作为键。
尤其是在使用
|
|
|
3
1
|
|
|
4
0
|
|
|
5
0
如果您需要类来实现IHashable,那么对于每个未实现IHashable的密封类,您将在希望将其用作包含哈希功能的键时编写适配器。相反,默认情况下您会得到它。 哈希代码也是比较对象相等性的第二行(第一行是指针相等性)。 |
|
|
6
0
如果每个类都有GetHashCode,则可以将每个对象放入哈希中。假设您有一个使用第三方对象(您不能修改)并希望将它们放入ab散列中。如果这些对象没有实现你虚构的
|
|
|
7
0
这只是猜测,但垃圾收集器可能会在内部存储某些对象的哈希表(可能是为了跟踪可终结的对象),这意味着任何对象都需要有哈希键。 |