IComparer<T> Gränssnitt
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Definierar en metod som en typ implementerar för att jämföra två objekt.
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)
Typparametrar
- T
Vilken typ av objekt som ska jämföras.
Det här är en contravariant-typparameter. Det innebär att du kan använda antingen den typ du angett eller en typ som inte är lika härledd. Mer information om kovarians och kontravarians finns i Kovarians och kontravarians i Generisk typ.- Härledda
Exempel
I följande exempel implementeras IComparer<T> gränssnittet för att jämföra objekt av typen Box efter deras dimensioner. Det här exemplet är en del av ett större exempel som tillhandahålls Comparer<T> för klassen.
// 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
Kommentarer
Det här gränssnittet används med List<T>.Sort metoderna och List<T>.BinarySearch . Det ger ett sätt att anpassa sorteringsordningen för en samling. Klasser som implementerar det här gränssnittet innehåller och SortedDictionary<TKey,TValue>SortedList<TKey,TValue> generiska klasser.
Standardimplementeringen av det här gränssnittet är Comparer<T> klassen. Klassen StringComparer implementerar det här gränssnittet för typen String.
Det här gränssnittet stöder beställningsjämförelser. Det vill säga när Compare metoden returnerar 0 innebär det att två objekt sorterar samma. Implementering av exakta likhetsjämförelser tillhandahålls av det IEqualityComparer<T> allmänna gränssnittet.
Vi rekommenderar att du härleder från Comparer<T> klassen i stället för att implementera IComparer<T> gränssnittet, eftersom Comparer<T> klassen tillhandahåller en explicit gränssnittsimplementering av IComparer.Compare metoden och egenskapen Default som hämtar standardjäxaren för objektet.
Metoder
| Name | Description |
|---|---|
| Compare(T, T) |
Jämför två objekt och returnerar ett värde som anger om det ena är mindre än, lika med eller större än det andra. |