この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

IComparable インターフェイス

 

公開日: 2016年10月

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

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

[ComVisibleAttribute(true)]
public interface IComparable

名前説明
System_CAPS_pubmethodCompareTo(Object)

現在のインスタンスを同じ型の別のオブジェクトと比較し、現在のインスタンスの並べ替え順序での位置が、比較対象のオブジェクトと比べて前か、後か、または同じかを示す整数を返します。

このインターフェイスは、値を持つ順序付けしたり並べ替えの種類によって実装されます。 実装する型が 1 つのメソッドを定義することが必要ですCompareTo(Object)、かどうか、並べ替え順序において、現在のインスタンスの位置は、前に、その後、同じ型の 2 番目のオブジェクトと同じかを示すです。 インスタンスのIComparable実装が自動的にメソッドによって呼び出されますなどArray.SortArrayList.Sortです。

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

説明

0 より小さい値

現在のインスタンスで指定されたオブジェクトの前に、CompareTo並べ替え順序のメソッドです。

0

この現在のインスタンスがで指定されたオブジェクトと並べ替え順序で同じ位置で発生する、CompareToメソッドです。

0 より大きい値

この現在のインスタンスで指定されたオブジェクトに依存して、CompareTo並べ替え順序のメソッドです。

すべての数値型 (などInt32Double) 実装IComparableと同様、 StringChar、およびDateTimeです。 カスタム型は、独自の実装も提供する必要があります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

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
1.1 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
Windows Phone
8.1 以降で使用可能
トップに戻る
表示: