Baca dalam bahasa Inggris

Bagikan melalui


Tuple<T1>.IStructuralComparable.CompareTo(Object, IComparer) Metode

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.

Membandingkan objek saat ini Tuple<T1> dengan objek tertentu dengan menggunakan perbandingan tertentu, dan mengembalikan bilangan bulat yang menunjukkan apakah objek saat ini sebelum, sesudah, atau dalam posisi yang sama dengan objek yang ditentukan dalam urutan pengurutan.

int IStructuralComparable.CompareTo(object other, System.Collections.IComparer comparer);

Parameter

other
Object

Objek untuk dibandingkan dengan instans saat ini.

comparer
IComparer

Objek yang menyediakan aturan kustom untuk perbandingan.

Mengembalikan

Bilangan bulat bertanda tangan yang menunjukkan posisi relatif instans ini dan other dalam urutan pengurutan, seperti yang ditunjukkan dalam tabel berikut.

Nilai Deskripsi
Bilangan bulat negatif Instans ini mendahului other.
Nol Instans ini dan other memiliki posisi yang sama dalam urutan pengurutan.
Bilangan bulat positif Instans otherini mengikuti .

Penerapan

Pengecualian

other bukan Tuple<T1> objek.

Contoh

Contoh berikut mendefinisikan kelas generik bernama DescendingComparer yang mengimplementasikan IComparer<T> antarmuka. DescendingComparer mengurutkan objek dalam urutan menurun daripada urutan naik dengan membalikkan nilai yang dikembalikan oleh perbandingan default untuk tipe tertentu. Instans kelas generik DescendingComparer kemudian diteruskan ke Array.Sort(Array, IComparer) metode untuk mengurutkan array Tuple<T1> objek dalam urutan turun. Perhatikan bahwa contoh tidak secara langsung memanggil IStructuralComparable.CompareTo metode . Metode ini dipanggil secara implisit oleh Array.Sort(Array, IComparer) metode untuk setiap elemen dalam array.

using System;
using System.Collections.Generic;

public class DescendingComparer<T> : IComparer<T>
{
    public int Compare(T x, T y) 
    {
        return -1 * Comparer<T>.Default.Compare(x, y);
    }
}

class CompareTo2
{
   static void Main()
   {
       Tuple<Double>[] values = { Tuple.Create(13.54),
                                  Tuple.Create(Double.NaN),
                                  Tuple.Create(-189.42993),
                                  Tuple.Create(Double.PositiveInfinity),
                                  Tuple.Create(Double.Epsilon),
                                  Tuple.Create(1.934E-17),
                                  Tuple.Create(Double.NegativeInfinity),
                                  Tuple.Create(-0.000000000003588),
                                  null };
       Console.WriteLine("The values in unsorted order:");
       foreach (var value in values)
           if (value != null)
               Console.WriteLine("   {0}", value.Item1);
           else
               Console.WriteLine("   <null>");
       Console.WriteLine();

       Array.Sort(values, new DescendingComparer<Tuple<Double>>());

       Console.WriteLine("The values sorted in descending order:");
       foreach (var value in values)
           if (value != null)
               Console.WriteLine("   {0}", value.Item1);
           else
               Console.WriteLine("   <null>");
    }
}
// The example displays the following output:
//      The values in unsorted order:
//         13.54
//         NaN
//         -189.42993
//         Infinity
//         4.94065645841247E-324
//         1.934E-17
//         -Infinity
//         -3.588E-12
//
//      The values sorted in descending order:
//         Infinity
//         13.54
//         1.934E-17
//         4.94065645841247E-324
//         -3.588E-12
//         -189.42993
//         -Infinity
//         NaN

Keterangan

Meskipun metode ini dapat dipanggil secara langsung, metode ini paling umum disebut dengan metode pengurutan koleksi yang menyertakan IComparer parameter untuk mengurutkan anggota koleksi. Misalnya, ini dipanggil dengan Array.Sort(Array, IComparer) metode dan Add metode SortedList objek yang diinstruksikan dengan menggunakan SortedList.SortedList(IComparer) konstruktor.

Perhatian

Metode IStructuralComparable.CompareTo ini ditujukan untuk digunakan dalam operasi pengurutan. Ini tidak boleh digunakan ketika tujuan utama perbandingan adalah untuk menentukan apakah dua objek sama. Untuk menentukan apakah dua objek sama, panggil IStructuralEquatable.Equals metode .

Berlaku untuk

Produk Versi
.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, 10
.NET Framework 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

Lihat juga