IComparer<T> 接口

定义

定义类型为比较两个对象而实现的方法。Defines a method that a type implements to compare two objects.

generic <typename T>
public interface class IComparer
public interface IComparer<in T>
public interface IComparer<T>
type IComparer<'T> = interface
Public Interface IComparer(Of In T)
Public Interface IComparer(Of T)

类型参数

T

要比较的对象的类型。The type of objects to compare.

这是逆变类型参数。 即,可以使用指定的类型,也可以使用派生程度较低的任何类型。 有关协变和逆变的详细信息,请参阅泛型中的协变和逆变
派生

示例

下面的示例实现 IComparer<T> 接口,以根据类型的对象的维度来比较对象类型 BoxThe following example implements the IComparer<T> interface to compare objects of type Box according to their dimensions. 此示例是为类提供的更大示例的一部分 Comparer<T>This example is part of a larger example provided for the Comparer<T> class.

// 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;
        }
    }
}
' 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
    Implements IComparer(Of Box)
    ' Compares by Height, Length, and Width.
    Public Function Compare(ByVal x As Box, ByVal y As Box) As Integer Implements _
                                                IComparer(Of Box).Compare
        If x.Height.CompareTo(y.Height) <> 0 Then
            Return x.Height.CompareTo(y.Height)
        ElseIf x.Length.CompareTo(y.Length) <> 0 Then
            Return x.Length.CompareTo(y.Length)
        ElseIf x.Width.CompareTo(y.Width) <> 0 Then
            Return x.Width.CompareTo(y.Width)
        Else
            Return 0
        End If
    End Function
End Class

注解

此接口与 List<T>.Sort 和方法一起使用 List<T>.BinarySearchThis interface is used with the List<T>.Sort and List<T>.BinarySearch methods. 它提供了一种方法来自定义集合的排序顺序。It provides a way to customize the sort order of a collection. 实现此接口的类包括 SortedDictionary<TKey,TValue>SortedList<TKey,TValue> 泛型类。Classes that implement this interface include the SortedDictionary<TKey,TValue> and SortedList<TKey,TValue> generic classes.

此接口的默认实现是 Comparer<T> 类。The default implementation of this interface is the Comparer<T> class. StringComparer类为类型实现此接口 StringThe StringComparer class implements this interface for type String.

此接口支持顺序比较。This interface supports ordering comparisons. 也就是说,当该 Compare 方法返回0时,表示两个对象排序相同。That is, when the Compare method returns 0, it means that two objects sort the same. 完全相等比较的实现由 IEqualityComparer<T> 泛型接口提供。Implementation of exact equality comparisons is provided by the IEqualityComparer<T> generic interface.

建议从 Comparer<T> 类派生,而不是实现 IComparer<T> 接口,因为 Comparer<T> 该类提供方法的显式接口实现 IComparer.CompareDefault 获取对象的默认比较器的属性。We recommend that you derive from the Comparer<T> class instead of implementing the IComparer<T> interface, because the Comparer<T> class provides an explicit interface implementation of the IComparer.Compare method and the Default property that gets the default comparer for the object.

方法

Compare(T, T)

比较两个对象并返回一个值,该值指示一个对象小于、等于还是大于另一个对象。Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.

适用于

另请参阅