IComparer<T> 介面

定義

定義類型會實作以比較兩個物件的方法。

C#
public interface IComparer<in T>
C#
public interface IComparer<T>

類型參數

T

要比較之物件的類型。

這是反變數的型別參數。 也就是說,您可以使用您指定的類型,或衍生程度較低的任何類型。 如需共變數與反變數的詳細資訊,請參閱泛型中的共變數與反變數
衍生

範例

下列範例會實作 介面, IComparer<T> 根據其維度來比較類型的 Box 物件。 此範例是針對 類別提供的較大範例的 Comparer<T> 一部分。

C#
// This class is not demonstrated in the Main method
// and is provided only to show how to implement
// the interface. It is recommended to derive
// from Comparer<T> instead of implementing IComparer<T>.
public class BoxComp : IComparer<Box>
{
    // Compares by Height, Length, and Width.
    public int Compare(Box x, Box y)
    {
        if (x.Height.CompareTo(y.Height) != 0)
        {
            return x.Height.CompareTo(y.Height);
        }
        else if (x.Length.CompareTo(y.Length) != 0)
        {
            return x.Length.CompareTo(y.Length);
        }
        else if (x.Width.CompareTo(y.Width) != 0)
        {
            return x.Width.CompareTo(y.Width);
        }
        else
        {
            return 0;
        }
    }
}

備註

這個介面會與 和 List<T>.BinarySearch 方法搭配List<T>.Sort使用。 它提供自定義集合排序順序的方法。 實作此介面的類別包括 SortedDictionary<TKey,TValue>SortedList<TKey,TValue> 泛型類別。

這個介面的預設實作是 Comparer<T> 類別。 類別會 StringComparer 針對類型 String實作這個介面。

此介面支援排序比較。 也就是說,當方法傳回0時 Compare ,這表示兩個物件會排序相同。 完全相等比較的實作是由泛型介面所 IEqualityComparer<T> 提供。

我們建議您衍生自 Comparer<T> 類別,而不是實作 IComparer<T> 介面,因為 Comparer<T> 類別會提供 方法的明確介面實 IComparer.Compare 作,以及 Default 取得對象預設比較子的屬性。

方法

Compare(T, T)

比較兩個物件並傳回值,指出其中一個物件為小於、等於或大於另一個物件。

適用於

產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

另請參閱