Windows app
摺疊目錄
展開目錄
本文章是由機器翻譯。 將指標移到文章內的文字上方即可查看原文。 其他資訊。
譯文
原文
資訊
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

IComparable 介面

 

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

命名空間:   System
組件:  mscorlib (在 mscorlib.dll 中)

[ComVisibleAttribute(true)]
public interface IComparable

名稱描述
System_CAPS_pubmethodCompareTo(Object)

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

這個介面是使用可以排列或排序其值的型別來實作的。它會要求實作型別以定義單一方法 CompareTo(Object),表示目前執行個體在排序次序中的位置是在相同型別的第二個物件之前、之後或相同位置。此執行個體的 IComparable 實作會由 Array.SortArrayList.Sort 這類方法自動呼叫。

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

意義

小於零

排序次序中目前執行個體在 CompareTo 方法所指定的物件前面。

Zero

此目前執行個體在排序次序中與 CompareTo 方法所指定的物件位於相同位置。

大於零

排序次序中此目前執行個體在 CompareTo 方法所指定的物件後面。

所有數字型別 (Numeric Type) (例如 Int32Double) 都會實作 IComparable,如同 StringCharDateTime 一般。自訂型別應該也會提供自己的 IComparable 實作,以便能夠排列或排序物件執行個體。

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

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

Universal Windows Platform
自 4.5 起可用
.NET Framework
自 1.1 起可用
Portable Class Library
支援版本:portable .NET platforms
Silverlight
自 2.0 起可用
Windows Phone Silverlight
自 7.0 起可用
Windows Phone
自 8.1 起可用
回到頁首
顯示:
© 2016 Microsoft