İngilizce dilinde oku

Aracılığıyla paylaş


IComparable.CompareTo(Object) Yöntem

Tanım

Geçerli örneği aynı türdeki başka bir nesneyle karşılaştırır ve geçerli örneğin diğer nesneyle aynı sıralama düzeninde önce geldiğini, izlediğini veya yine aynı konumda yer alıp almadığını belirten bir tamsayı döndürür.

C#
public int CompareTo(object obj);
C#
public int CompareTo(object? obj);

Parametreler

obj
Object

Bu örnekle karşılaştıracak bir nesne.

Döndürülenler

Karşılaştırılan nesnelerin göreli sırasını gösteren bir değer. Dönüş değeri şu anlamlara sahiptir:

Değer Anlam
Sıfırdan küçük Bu örnek, sıralama düzeninde obj öncesinde yer alır.
Sıfır Bu örnek, sıralama düzeninde objile aynı konumda gerçekleşir.
Sıfırdan büyük Bu örnek, sıralama düzeninde obj izler.

Özel durumlar

obj bu örnekle aynı tür değildir.

Örnekler

Aşağıdaki örnekte, IComparable uygulayan bir Temperature nesnesini başka bir nesneyle karşılaştırmak için CompareTo kullanımı gösterilmektedir. Temperature nesnesi, Int32.CompareTo yöntemine bir çağrı sarmalayarak CompareTo uygular.

C#
using System;
using System.Collections;

public class Temperature : IComparable
{
    // The temperature value
    protected double temperatureF;

    public int CompareTo(object obj) {
        if (obj == null) return 1;

        Temperature otherTemperature = obj as Temperature;
        if (otherTemperature != null)
            return this.temperatureF.CompareTo(otherTemperature.temperatureF);
        else
           throw new ArgumentException("Object is not a Temperature");
    }

    public double Fahrenheit
    {
        get
        {
            return this.temperatureF;
        }
        set 
        {
            this.temperatureF = value;
        }
    }

    public double Celsius
    {
        get
        {
            return (this.temperatureF - 32) * (5.0/9);
        }
        set
        {
            this.temperatureF = (value * 9.0/5) + 32;
        }
    }
}

public class CompareTemperatures
{
   public static void Main()
   {
      ArrayList temperatures = new ArrayList();
      // Initialize random number generator.
      Random rnd = new Random();

      // Generate 10 temperatures between 0 and 100 randomly.
      for (int ctr = 1; ctr <= 10; ctr++)
      {
         int degrees = rnd.Next(0, 100);
         Temperature temp = new Temperature();
         temp.Fahrenheit = degrees;
         temperatures.Add(temp);
      }

      // Sort ArrayList.
      temperatures.Sort();

      foreach (Temperature temp in temperatures)
         Console.WriteLine(temp.Fahrenheit);
   }
}
// The example displays the following output to the console (individual
// values may vary because they are randomly generated):
//       2
//       7
//       16
//       17
//       31
//       37
//       58
//       66
//       72
//       95

Açıklamalar

CompareTo yöntemi, değerleri sıralanabilen veya sıralanabilen türler tarafından uygulanır. Dizinin her üyesini sıralamak için Array.Sortgibi genel olmayan koleksiyon nesnelerinin yöntemleri tarafından otomatik olarak çağrılır. Özel bir sınıf veya yapı IComparableuygulamazsa, üyeleri sıralanamaz ve sıralama işlemi bir InvalidOperationExceptionoluşturabilir.

Bu yöntem yalnızca bir tanımdır ve etkili olması için belirli bir sınıf veya değer türü tarafından uygulanması gerekir. Dönüş Değeri bölümünde belirtilen karşılaştırmaların anlamı ("önce gelir", "ile aynı konumda gerçekleşir" ve "aşağıdakiler") belirli uygulamaya bağlıdır.

Tanım gereği, herhangi bir nesne nullbüyüktür (veya izler) ve iki null başvuru birbirine eşit olarak karşılaştırır.

objparametresi, bu arabirimi uygulayan sınıf veya değer türüyle aynı türde olmalıdır; aksi takdirde, bir ArgumentException oluşturulur.

Uygulayanlara Notlar

A, B ve C nesneleri için aşağıdakiler doğru olmalıdır:

A.CompareTo(A) sıfır döndürmelidir.

A.CompareTo(B) sıfır döndürürse, B.CompareTo(A) sıfır döndürmelidir.

A.CompareTo(B) sıfır, B.CompareTo(C) sıfır döndürürse, A.CompareTo(C) sıfır döndürmelidir.

A.CompareTo(B) sıfır dışında bir değer döndürürse, B.CompareTo(A) ters işareti değeri döndürmelidir.

A.CompareTo(B) sıfıra eşit olmayan bir "x" değeri döndürürse ve B.CompareTo(C) "x" ile aynı işaretin "y" değerini döndürürse, A.CompareTo(C) "x" ve "y" ile aynı işaretin değerini döndürmelidir.

Arayanlara Notlar

Bir sınıfın örneklerinin sırasını belirlemek için CompareTo(Object) yöntemini kullanın.

Şunlara uygulanır

Ürün Sürümler
.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 1.1, 2.0, 3.0, 3.5, 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

Ayrıca bkz.