实现IComparable <NotSelf>

Luc*_*lle 6 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;
}
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 6

我至少会认为它"奇怪" - 特别是在那一点上,比较不会是对称的,这通常是正常比较合同的一部分.

如果有一种特殊的情况,它比你想要做的任何其他实现更简单,那就没关系 - 但我不能说我遇到过这样的情况.像这样的比较几乎总是用于排序同类集合或类似的东西.

您是否有特定的情况,或者它只是一个"感兴趣"的问题?