![]() |
1
10
你不能,真的。好吧,除了返回一个常量值。 往这边看…所有电子邮件为“x”的人都必须有相同的哈希代码,因为他们是平等的。所有名为“y”的人都必须有相同的哈希代码,因此它继续:
注意我们是如何改变这两个名字的 和 电子邮件中的任意值,但哈希值必须仍为h1。 |
![]() |
2
8
我知道这不能回答你的问题,但你的方法是错误的。如果a==b,b==c,那么a==c是必然的。
在这个例子中,a==b,b==c,但是a!=c.这是不正确的行为。如果您想要实现这个行为,那么有一个方法other等于这个比较,但不等于。 见 http://msdn.microsoft.com/en-us/library/ms173147%28VS.80%29.aspx . |
![]() |
3
0
正如亚历克斯所说,这更像是一个与业务规则相关的事情,我不会为此使用equals。我还有另一个方法,它有您在equals方法中使用的实现。 当然,Alex提到了一个名字+电子邮件的散列列表,但这对你也不起作用,因为Jon指出,考虑到你的业务规则,这并不是你真正能做的事情。 |
![]() |
4
-4
有一种方法可以让你做你想做的事。 假设您有一个这样定义的枚举
接下来,将equals方法的实现拉到另一个方法中,这样就可以从equals方法调用它。在这个新方法中,如果名称相同,则将枚举设置为name;如果电子邮件相同,则将枚举设置为email;如果两者都不相同,则将枚举设置为none。 然后,在gethashcode实现中,您也可以调用这个新方法,然后根据名称或电子邮件或两者的组合返回哈希代码。 我希望这是有道理的。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 5 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 5 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |