C_sharp / Study / IComparerable



はじめに

IComparableインターフェイス

interface IComparable
{
	int CompareTo(Object obj);
}
  • 戻り値
    • 負: このインスタンスは obj よりも小さくなっています。
    • 0 : このインスタンスは obj と等価です。
    • 正: このインスタンスは obj よりも大きくなっています。
  • インスタンスの比較を行えるようになっている。
    • IComparerは比較を行うためのクラスで、こっちはクラスにメソッドとして比較装置を持つ。。。ってことか?
    • IComparer同様Array.Sort()で利用できるらしい。

コード

class MyComparerable : System.IComparable
{
    private int intValue;

    public MyComparerable(int intValue)
    {
        this.intValue = intValue;
    }

    public int CompareTo(object obj)
    {
        return this.intValue.CompareTo(((MyComparerable)obj).intValue);
    }
}
  • ここでは中でもCompareTo?()を利用しているからちょっとずるいけど。。。実装はお好きにってところだし。
    • 重要なのはメンバのintValueがインスタンスのみがオブジェクト比較の対象となっているというところ。(これしかメンバないけど)
  • 言うまでもないが実際に利用されているCompareTo?()はintのメンバです。

利用例

コード

MyComparerable c1 = new MyComparerable(10);
MyComparerable c2 = new MyComparerable(20);
Console.WriteLine(c1.CompareTo(c2));

出力

-1

参考リンク

IComparable インターフェイス @msdn

MenuBar


最新の20件

2015-05-15 2014-12-07 2008-11-17 2007-08-30 2007-04-21 2007-03-13 2007-03-12 2007-02-20 2007-02-14 2007-02-04 2006-11-26 2006-11-23 2006-11-20 2006-11-18 2006-11-13

  • counter: 408
  • today: 1
  • yesterday: 0
  • online: 1