gpt4 book ai didi

c# - 使 Equals 成为通用方法的目的是什么?

转载 作者:太空狗 更新时间:2023-10-29 22:35:13 25 4
gpt4 key购买 nike

这不是如何实现的问题,而是这个方法的目的是什么?我的意思是——好的,我知道搜索时需要它,但为什么它作为“对象”类的方法被隐藏了?

故事是这样的——我有一些对象在默认情况下不可比较的类(在逻辑意义上)。每次您想要比较/搜索它们时,您都必须准确指定如何进行匹配。在这种情况下最好的办法是:

  1. 没有像 Equals 这样普遍存在的方法,问题解决了,没有程序员(我类的用户)会因为在搜索时省略自定义匹配而落入陷阱

    但因为我无法更改 C#

  2. 隐藏继承的、不需要的方法以防止调用(编译时)

    但这也需要更改为 C#

  3. 覆盖 Equals 并抛出异常——至少程序员在运行时得到通知

所以我问是因为我被迫丑陋 (c),因为 (b) 是不可能的,因为缺少 (a)。

那么简而言之——强制所有对象具有可比性(等于)的原因是什么?对我来说,这是一个过分的假设。预先感谢您的启发:-)。

最佳答案

我同意这在 .NET 和 Java 中基本上都是一个错误。 GetHashCode 也是如此 - 每个对象都有一个监视器。

无可否认,它比泛型更有意义 一点 - 但对于泛型,重写 Equals(object) 总是让人感觉很糟糕。

blogged about this不久前 - 您可能会发现帖子和评论都很有趣。

关于c# - 使 Equals 成为通用方法的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1838482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com