本文章是由機器翻譯。 將指標移到文章內的文字上方即可查看原文。 其他資訊。
譯文
原文
資訊
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<T> 介面

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

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

public interface IComparable<in T>

類型參數

in T

要比較之物件的型別。

這個類型參數是 Contravariant。換言之,您可以使用所指定的類型或是衍生程度較小的任一類型。如需共變數與反變數的詳細資訊,請參閱泛型中的共變數和反變數

IComparable<T> 類型會公開下列成員。

  名稱描述
公用方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援CompareTo將目前的執行個體與另一個具有相同型別的物件相比較。
回頁首

這個介面是由值可以排序的型別實作,主要排序的。 例如,數字大於第二個數字可以,因此,一個字串可能在別的前以字母順序顯示。 實值型別或類別會實作 CompareTo(T) 方法,以建立適用於類似排序用途的型別特定之比較方法。

IComparable<T> 介面可定義 CompareTo(T) 方法,而此方法可判斷實作型別的執行個體之排序次序。 IEquatable<T> 介面可定義 Equals 方法,而此方法可判斷實作型別的執行個體是否相等。

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

意義

小於零

這個物件小於 CompareTo 方法所指定的物件。

Zero

這個物件等於方法參數。

大於零

這個物件大於方法參數。

IComparable<T> 介面提供可用於排序泛型集合物件之成員的強型別 (Strongly Typed) 比較方法。 因此,通常不是從開發人員程式碼直接呼叫, 而是由 List<T>.Sort()Add 之類的方法自動呼叫。

實作者注意事項

IComparable<T> 介面的型別參數取代為實作此介面的型別。

如果您實作 IComparable<T>,您應該多載 op_GreaterThanop_GreaterThanOrEqualop_LessThanop_LessThanOrEqual 運算子套用至與 CompareTo相同的傳回值。 此外,您也應該實作 IEquatable<T> 如需完整詳細資訊請參閱 IEquatable<T> 的文件。

下列程式碼範例說明 IComparable<T> 的實作簡單的 Temperature 物件。 此範例會建立具有 Temperature 物件索引鍵的 SortedList<TKey, TValue> 字串集合,並將數對溫度和字串加入超出序列的清單中。 呼叫 Add 方法時,SortedList<TKey, TValue> 集合會使用 IComparable<T> 實作以排序清單項目,然後這些項目會依遞增的溫度順序顯示。


using System;
using System.Collections.Generic;

public class Temperature : IComparable<Temperature>
{
    // Implement the generic CompareTo method with the Temperature 
    // class as the Type parameter. 
    //
    public int CompareTo(Temperature other)
    {
        // If other is not a valid object reference, this instance is greater.
        if (other == null) return 1;

        // The temperature comparison depends on the comparison of 
        // the underlying Double values. 
        return m_value.CompareTo(other.m_value);
    }

    // The underlying temperature value.
    protected double m_value = 0.0;

    public double Celsius    
    {
        get
        {
            return m_value - 273.15;
        }
    }

    public double Kelvin    
    {
        get
        {
            return m_value;
        }
        set
        {
            if (value < 0.0)
            {
                throw new ArgumentException("Temperature cannot be less than absolute zero.");
            }
            else
            {
                m_value = value;
            }
        }
    }

    public Temperature(double kelvins)
    {
        this.Kelvin = kelvins;
    }
}

public class Example
{
    public static void Main()
    {
        SortedList<Temperature, string> temps = 
            new SortedList<Temperature, string>();

        // Add entries to the sorted list, out of order.
        temps.Add(new Temperature(2017.15), "Boiling point of Lead");
        temps.Add(new Temperature(0), "Absolute zero");
        temps.Add(new Temperature(273.15), "Freezing point of water");
        temps.Add(new Temperature(5100.15), "Boiling point of Carbon");
        temps.Add(new Temperature(373.15), "Boiling point of water");
        temps.Add(new Temperature(600.65), "Melting point of Lead");

        foreach( KeyValuePair<Temperature, string> kvp in temps )
        {
            Console.WriteLine("{0} is {1} degrees Celsius.", kvp.Value, kvp.Key.Celsius);
        }
    }
}
/* This example displays the following output:
      Absolute zero is -273.15 degrees Celsius.
      Freezing point of water is 0 degrees Celsius.
      Boiling point of water is 100 degrees Celsius.
      Melting point of Lead is 327.5 degrees Celsius.
      Boiling point of Lead is 1744 degrees Celsius.
      Boiling point of Carbon is 4827 degrees Celsius.
*/


.NET Framework

支援版本:4.5.2、4.5.1、4.5、4、3.5、3.0、2.0

.NET Framework Client Profile

支援版本:4、3.5 SP1

可攜式類別庫

支援版本:可攜式類別庫

適用於 Windows 市集應用程式的 .NET

支援版本:Windows 8

適用於 Windows Phone 應用程式的 .NET

支援版本:Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (不支援伺服器核心角色), Windows Server 2008 R2 (SP1 (含) 以後版本支援伺服器核心角色,不支援 Itanium)

.NET Framework 並不支援各種平台的所有版本。如需支援版本的清單,請參閱.NET Framework 系統需求

社群新增項目

顯示:
© 2015 Microsoft