这可能是一个琐碎的问题,但是我没有找到任何有关此信息:使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/

10-11 05:04