gre*_*man 5 c# language-design
这不是一个如何实现它的问题,但这个方法的目的是什么?我的意思是 - 好吧,我知道在搜索时需要它,但为什么它被埋没为"对象"类的方法?
故事发生了 - 我有一些类,默认情况下(逻辑意义上)对象不具有可比性.每次要比较/搜索它们时,都必须准确指定匹配方式.在这种情况下最好的是:
没有像Equals这样无处不在的方法,问题解决了,没有程序员(我班级的用户)会因为在搜索时省略自定义匹配而陷入陷阱
但既然我无法改变C#
隐藏继承的,不需要的方法来阻止调用(编译时)
但这也需要改为C#
override Equals并抛出异常 - 至少在运行时通知程序员
所以我问,因为我被迫丑陋(c),因为(b)是不可能的,因为缺乏(a).
简而言之 - 迫使所有对象具有可比性(Equals)的原因是什么?对我来说,这是一个过分的假设.提前感谢您的启示:-).
我同意它在.NET和Java中基本上都是错误的.同样如此GetHashCode- 以及每个具有监视器的对象.
它提出了一点仿制药之前更有意义,不可否认-但泛型,重写Equals(object)总是感觉很可怕.
我刚才在博客上写了这篇文章 - 你可能会发现帖子和评论都很有趣.
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |