IComparer<T> Antarmuka
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan metode yang diterapkan jenis untuk membandingkan dua objek.
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)
Jenis parameter
- T
Jenis objek yang akan dibandingkan.
Parameter jenis ini bersifat kontravarian. Artinya, Anda bisa menggunakan jenis yang Anda tentukan atau jenis apa pun yang tidak banyak diturunkan. Untuk informasi lebih lanjut tentang kovariansi dan kontravariansi, lihat Kovariansi dan Kontravariansi dalam Generik.- Turunan
Contoh
Contoh berikut mengimplementasikan IComparer<T> antarmuka untuk membandingkan objek jenis Box
sesuai dengan dimensinya. Contoh ini adalah bagian dari contoh yang lebih besar yang disediakan untuk Comparer<T> kelas .
// 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
Keterangan
Antarmuka ini digunakan dengan List<T>.Sort metode dan List<T>.BinarySearch . Ini menyediakan cara untuk menyesuaikan urutan pengurutan koleksi. Kelas yang mengimplementasikan antarmuka ini mencakup SortedDictionary<TKey,TValue> kelas generik dan SortedList<TKey,TValue> .
Implementasi default antarmuka ini adalah Comparer<T> kelas . Kelas StringComparer mengimplementasikan antarmuka ini untuk jenis String.
Antarmuka ini mendukung perbandingan pemesanan. Artinya, ketika Compare metode mengembalikan 0, itu berarti bahwa dua objek mengurutkan yang sama. Implementasi perbandingan kesetaraan yang tepat disediakan oleh IEqualityComparer<T> antarmuka generik.
Sebaiknya Anda berasal dari Comparer<T> kelas alih-alih mengimplementasikan IComparer<T> antarmuka, karena Comparer<T> kelas menyediakan implementasi antarmuka eksplisit dari IComparer.Compare metode dan Default properti yang mendapatkan perbandingan default untuk objek.
Metode
Compare(T, T) |
Membandingkan dua objek dan mengembalikan nilai yang menunjukkan apakah satu kurang dari, sama dengan, atau lebih besar dari yang lain. |