はじめに †
IComparerインターフェイス †
interface IComparer
{
int Compare (Object x, Object y); // 2 つのオブジェクトを比較する。
}
- 戻り値
- 負: x が y より小さい。
- 0 : x と y は等しい。
- 正: x が y より大きい。
- ざっとでしか調べていないがSystem.Array.Sort()で利用するみたい。
- たしかにSortの方が単純な比較よりも利用価値は高いと思うが他の一般的な(?)利用法はまだ知らない。
コード †
class MyComparer : System.Collections.IComparer
{
public int Compare(object x, object y)
{
return (int)y - (int)x;
}
}
- 通常の比較とは逆の戻り値を返すように計算している。降順でソートを行うため。
利用例 †
コード †
int[] array = { 3, 1, 2 };
foreach (int i in array)
{
Console.WriteLine(i);
}
Console.WriteLine("通常のソートの実行");
System.Array.Sort(array);
foreach (int i in array)
{
Console.WriteLine(i);
}
Console.WriteLine("自作比較クラスでのソートの実行");
System.Array.Sort(array, new MyComparer());
foreach (int i in array)
{
Console.WriteLine(i);
}
- System.Array.Sort()の引数にはIComparerを指定してソートを行うことができる。
- もちろん比較時にメンバ Compare()が利用される。
- Strategyみたいなもんか。
出力 †
3
1
2
通常のソートの実行
1
2
3
自作比較クラスでのソートの実行
3
2
1
参考リンク †
最新の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: 472
- today: 1
- yesterday: 0
- online: 1