检查compareTo中参数的有效性?

时间:2019-03-17 22:01:56

标签: c#

如果我有实现IComparable的此类:

public class BankAccount : IComparable<BankAccount>
{
    [...]

    public int CompareTo(BankAccount that)
    {
        if (this.Balance >  that.Balance) return -1;
        if (this.Balance == that.Balance) return 0;
        return 1;
    }
}

我应该检查that是否为空。另外,我应该检查that是否实际上是BankAccount类型的吗?如果由于某种原因,最好键入check,那为什么呢?我的意思是C#是静态类型,在我的情况下,BankAccount不是基类。

1 个答案:

答案 0 :(得分:1)

  

我应该检查一下是否为空

是的,如果为null,则可能会引发一些异常。

  

另外,我应该检查一下它是否实际上是BankAccount类型

为什么?因为您使用的是IComparable IComparable<T>

的强类型版本

您也可以使用Comparison<T>委托代替提供IComparable<T>