c#是否与Java with equals和gethashcode有相同的问题?
问题如:http://onjava.com/pub/a/onjava/2006/09/13/dont-let-hibernate-steal-your-identity.html
答案 0 :(得分:12)
如果你的意思是在继承方面很难定义平等,是的。
但是,.NET具有IEqualityComparer<T>
接口,经常用于等同和散列 - 用于Dictionary<TKey, TValue>
等容器。几乎框架中需要相等/散列的所有内容都允许行为由IEqualityComparer<T>
指定,这意味着如果类型本身给出的形式不适合您的需要,您可以表达您想要的任何相等概念。
答案 1 :(得分:3)
不确定你说的是哪些问题,因为你有点模糊......
但是,如果你的意思是有应该(如果你不希望编译器警告或代码中可能出现意外行为)覆盖GetHashCode
时覆盖Equals
然后是的。