İngilizce dilinde oku

Aracılığıyla paylaş


IComparable Arabirim

Tanım

Bir değer türünün veya sınıfının örneklerini sıralamak veya sıralamak için uyguladığı genelleştirilmiş türe özgü karşılaştırma yöntemini tanımlar.

C#
public interface IComparable
C#
[System.Runtime.InteropServices.ComVisible(true)]
public interface IComparable
Türetilmiş
Öznitelikler

Örnekler

Aşağıdaki örnekte ve gerekli CompareTo yönteminin IComparable uygulanması gösterilmektedir.

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

Bu arabirim, değerleri sıralanabilir veya sıralanabilir türler tarafından uygulanır. Türlerin uygulanmasının, CompareTo(Object)geçerli örneğin sıralama düzenindeki konumunun önce mi, sonra mı yoksa aynı türde ikinci bir nesneyle aynı mı olduğunu belirten tek bir yöntemi tanımlamasını gerektirir. Örneğin IComparable uygulaması ve ArrayList.Sortgibi yöntemler tarafından otomatik olarak Array.Sort çağrılır.

yönteminin CompareTo(Object) uygulanması, aşağıdaki tabloda gösterildiği gibi üç değerden birine sahip bir Int32 döndürmelidir.

Değer Anlamı
Sıfırdan küçük Geçerli örnek, sıralama düzeninde CompareTo yöntemi tarafından belirtilen nesnenin önüne geçer.
Sıfır Bu geçerli örnek, sıralama düzeninde yöntemi tarafından CompareTo belirtilen nesneyle aynı konumda yer alır.
Sıfırdan büyük Bu geçerli örnek, sıralama düzeninde CompareTo yöntemi tarafından belirtilen nesneyi izler.

Tüm sayısal türler (ve gibi Int32 Double) , , ve DateTimegibi CharStringuygularIComparable. Özel türler ayrıca nesne örneklerinin IComparable sıralanması veya sıralanması için kendi uygulamalarını sağlamalıdır.

Yöntemler

CompareTo(Object)

Mevcut örneği aynı türdeki başka bir nesne ile karşılaştırır ve geçerli örneğin, diğer nesneyle aynı sıralama düzeni konumunda mı olduğunu, önünde mi olduğunu, yoksa arkasında mı olduğunu belirten bir tamsayı döndürür.

Ş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
.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
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0