IComparer<T> Rozhraní
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Definuje metodu, kterou typ implementuje k porovnání dvou 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)
Parametry typu
- T
Typ objektů, které se mají porovnat.
Tento parametr typu je kontravariantní. To znamená, že můžete použít buď zadaný typ, nebo libovolný typ, který je méně odvozený. Další informace o kovarianci a kontravarianci najdete v tématu popisujícím kovarianci a kontravarianci u parametrického polymorfismu.- Odvozené
Příklady
Následující příklad implementuje IComparer<T> rozhraní pro porovnání objektů typu Box
podle jejich dimenzí. Tento příklad je součástí většího příkladu poskytnutého Comparer<T> pro třídu .
// 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
Poznámky
Toto rozhraní se používá s metodami List<T>.Sort a List<T>.BinarySearch . Poskytuje způsob, jak přizpůsobit pořadí řazení kolekce. Třídy, které implementují toto rozhraní, zahrnují SortedDictionary<TKey,TValue> obecné třídy a SortedList<TKey,TValue> .
Výchozí implementace tohoto rozhraní je Comparer<T> třída . Třída StringComparer implementuje toto rozhraní pro typ String.
Toto rozhraní podporuje porovnání řazení. To znamená, že když Compare metoda vrátí hodnotu 0, znamená to, že dva objekty jsou seřazeny stejně. Implementaci přesného porovnání rovnosti zajišťuje IEqualityComparer<T> obecné rozhraní.
Doporučujeme odvodit z Comparer<T> třídy místo implementace IComparer<T> rozhraní, protože Comparer<T> třída poskytuje explicitní implementaci IComparer.Compare rozhraní metody a Default vlastnosti, která získá výchozí porovnávací nástroj pro objekt.
Metody
Compare(T, T) |
Porovná dva objekty a vrátí hodnotu označující, zda je jeden menší než, roven nebo větší než druhý. |