|
|
1
20
经过调查,事情并没有我想象的那么糟。基本上,当一切都正确实现(gethashcode等)时,文档是正确的,并且行为是正确的。但是,如果您尝试自己实现IEquatable,那么您的equals方法将永远不会被调用(这似乎是由于GetHashCode没有正确实现)。因此,虽然文档在技术上是错误的,但在您永远都不想做的边缘情况下是错误的(如果这次调查教会了我什么,那就是IEquatable是您应该原子地实现的一整套方法的一部分(按惯例,而不是按规则,很不幸))。这方面的好消息来源是: Is there a complete IEquatable implementation reference? |
|
|
2
10
界面
因此,这个接口的良好实现将实现这两个功能。linq扩展方法except依赖哈希代码,以便在内部使用字典或设置查找以确定要跳过哪些对象,因此需要正确的gethashcode实现。
不幸的是,当你使用
这里的问题是
所以你有两个选择:
|
|
|
3
0
猜猜看,这是不同的课程吗?我认为默认情况下,iequatable只适用于同一类。所以它可以通过返回到对象.equal方法。 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 9 月前 |
|
|
Pavel Foltyn · 如何在C中生成逆字典# 11 月前 |
|
ewok · 基于种子和上一个值创建值列表 1 年前 |
|
|
Vasu V · 将foreach转换为select语句 1 年前 |
|
Modest · 使用命名空间和文本值序列化xElement 1 年前 |