閱讀英文版本

分享方式:


IComparable 介面

定義

定義特定通用類型的比較方法,實值類型或類別會實作這個方法,以排列或排序其執行個體。

C#
public interface IComparable
C#
[System.Runtime.InteropServices.ComVisible(true)]
public interface IComparable
衍生
屬性

範例

下列範例說明 和 必要 CompareTo 方法的實作 IComparable

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

備註

這個介面是由可排序或排序其值的類型所實作。 它需要實作型別定義單一方法 CompareTo(Object) ,指出目前實例在排序次序中的位置是之前、之後還是與相同類型的第二個物件相同。 實例的實作 IComparable 是由 和 ArrayList.Sort 之類的 Array.Sort 方法自動呼叫。

方法的實作 CompareTo(Object) 必須傳回 Int32 具有三個值之一的 ,如下表所示。

意義
小於零 目前實例在 排序次序中方法所 CompareTo 指定的 物件之前。
這個目前的實例會以與 方法所 CompareTo 指定的物件相同的排序次序位置發生。
大於零 這個目前的 實例會依照 排序次序中的 CompareTo 方法所指定的 物件。

所有數數值型別 (例如 和) 實 IComparable 作 、,如 、 CharString 、 和 DateTimeDoubleInt32 自訂類型也應該提供自己的 實 IComparable 作,讓物件實例能夠排序或排序。

方法

CompareTo(Object)

將目前的執行個體與相同類型的另一個物件相比較,並傳回整數,這個整數表示目前的執行個體在排序次序中,位於另一個物件之前、之後或相同位置。

適用於

產品 版本
.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