簡體   English   中英

CompareTo()有什么作用? 可比

[英]What does CompareTo() do? IComparable

我正在使用IComparable和IComparer

在學生班上:[IComparable]

    public int CompareTo(Student studentToCompare)
    {
        if (this.Number < studentToCompare.Number)
            return 1;
        else if (this.Number > studentToCompare.Number)
            return -1;
        else
            return 0;
    }

在StudentCompareName類中:[IComparer]

    public int Compare(Student x, Student y)
    {
        return string.Compare(x.Name, y.Name);
    }

使用Compare(學生x,學生y),我按姓名對學生列表進行排序。

如果我在Student類中不使用CompareTo(),則會出錯。

我想知道為什么我的主(學生)類中需要有一個CompareTo(),它有什么作用? 為什么我需要首先比較Student類中的學生編號,然后才允許對StudentCompareName類中的姓名進行排序?

我正在使用IComparable和IComparer

這就是混亂的根源。 你只需要兩個中的一個 -他們很少會在同一個類中實現。

IComparable<T>以便在一個對象和另一個對象之間進行自然比較。 在像Student這樣的情況下,這可能沒有任何意義,因為有多種方法可以比較學生。 另一方面,對於類似DateTime東西來說,這是很有意義的。

IComparer<T>是一個自定義比較-因此,有一個StudentNameComparer有意義,例如,通過比較名稱來實現IComparer<Student>

IComparable是一個接口 ,表示它定義了必須在繼承類中實現的方法。 這只是您對“比較”對您的對象的含義的實現。

CompareTo定義您的基礎學生是“大於”,“小於”還是“等於” studentToCompare ,您可以根據自己的要求定義它們。

有關更多信息,請參見MSDN文檔站點。

不編寫CompareTo時出現錯誤的原因是,如果沒有,則您的類實際上不會實現IComparable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM