c# - 实现 IComparable<NotSelf>

标签 c# icomparable

这可能是一个微不足道的问题,但我没有找到任何相关信息:制作 T 型工具是否“有害”或被视为不良做法 IComparable<S> (T 和 S 是两种不同的类型)?

例子:

class Foo : IComparable<int>
{
    public int CompareTo(int other)
    {
        if (other < i) return -1;
        if (other > i) return 1;

        return 0;
    }

    private int i;
}

是否应该避免这种代码,如果是,为什么?

最佳答案

我至少会认为它“奇怪”——特别是在那个时候比较不会是对称的,这通常是正常比较契约(Contract)的一部分。

如果在某种特定情况下,它比您想要做的任何其他实现都简单,那也没关系 - 但我不能说我曾经遇到过这种情况。像这样的比较几乎总是用于对同类集合或类似的东西进行排序。

您是否考虑过特定​​情况,或者这只是一个“兴趣”问题?

关于c# - 实现 IComparable<NotSelf>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2539500/

相关文章:

c# - 如何从代码后面访问数据到 MVVM

c# - ASP.NET - AppDomain.CurrentDomain.GetAssemblies() - AppDomain 重启后程序集丢失

c# - 为什么 IComparable<T> 不继承自 IComparable?

c# - 在 WCF 中序列化时不包括 IComparable

c# - Mono 中的通用 IComparable 实现问题

c# - 使用反射将 XML 转换为对象

c# - 使用 RemoteAuthenticationHandler CallbackPath 与 IApplicationBuilder 路径匹配

c# - 如何测量工作流消耗的处理器时间百分比和总内存?

f# - f# 中可区分联合的内置比较

c# - IComparable<T>.CompareTo 与 Sort 中的 null 进行比较