エクスポート (0) 印刷
すべて展開
この記事は機械翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。 詳細情報
訳文
原文

IComparable<T> インターフェイス

インスタンスの並べ替えなどを目的とし、型固有の比較メソッドを作成するために値型またはクラスで実装する、汎用の比較メソッドを定義します。

名前空間:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public interface IComparable<in T>

型パラメーター

in T

比較するオブジェクトの型。

このパラメーターが反変の型パラメーターです。つまり、その指定した型を使用するか、それよりも弱い任意の派生型を使用することができます。共変性と反変性の詳細については、「ジェネリックの共変性と反変性」を参照してください。

IComparable<T> 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETCompareTo現在のオブジェクトを同じ型の別のオブジェクトと比較します。
このページのトップへ

このインターフェイスは、値がある順序で並べることができるクラスの型で主に実行されます。 たとえば、1 台の数は 2 番目の数より大きい 1 の文字列は別の前にアルファベット順に表示できます。 値型やクラスは、CompareTo(T) メソッドを実装し、並べ替えなどの目的に適した型固有の比較メソッドを作成します。

IComparable<T> インターフェイスには、実装している型のインスタンスの並べ替え順序を決定する CompareTo(T) メソッドが定義されています。 IEquatable<T> インターフェイスには、実装している型のインスタンスの等価性を決定する Equals メソッドが定義されています。

CompareTo(T) メソッドの実装は、次の表に示すように、3 つの値のいずれかを持つ Int32 を返す必要があります。

説明

0 より小さい値

このオブジェクトは、CompareTo メソッドで指定されたオブジェクトを下回ります。

0

このオブジェクトは、メソッドのパラメーターと同じです。

0 を超える値

このオブジェクトは、メソッドのパラメーターを上回ります。

IComparable<T> インターフェイスには、ジェネリック コレクション オブジェクトのメンバーを並べ替えるための、厳密に型指定された比較メソッドが用意されています。 このため、これは開発者のコードから通常直接呼び出されることはありません。 その代わりに、これは List<T>.Sort()Add などのメソッドにより自動的に呼び出されます。

実装時の注意

IComparable<T> インターフェイスの型パラメーターを、このインターフェイスを実装する型に置き換えます。

IComparable<T> を実装する場合は、CompareToを COM の戻り値に op_GreaterThanop_GreaterThanOrEqualop_LessThanop_LessThanOrEqual の演算子をオーバーロードする必要があります。 また、IEquatable<T>を実装する必要があります。 詳細については IEquatable<T> の" "を参照してください。

次のコード例に Temperature の簡単なオブジェクトの IComparable<T> の実装例を示します。 この例では、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