[この記事は19年前に書かれました]
自作クラスのリストのソートを行う方法の1つは、Comparisonデリゲートを作成し、 ソート時に指定する方法があります。
class Test
{
private int num;
public int Num { get { return num; } }
public Test(int num)
{
this.num = num;
}
}
class Program
{
static int Compare(Test x, Test y)
{
return x.Num.CompareTo(y.Num);
}
static void Main(string[] args)
{
List list = new List();
list.Add(new Test(8));
list.Add(new Test(5));
list.Add(new Test(1));
list.Add(new Test(3));
// ソート実行
list.Sort(Compare);
foreach (Test test in list)
{
Console.WriteLine(test.Num);
}
}
}
出力:1 3 5 8
上記コードは、匿名デリゲートを使用して以下のようにも記述できます。 ソートアルゴリズムがシンプルな場合は、IComparableインタフェースやIComparerインタフェースを使用するソートよりすっきりします。
list.Sort(delegate(Test x, Test y)
{
return x.Num.CompareTo(y.Num);
});
関連記事
・自作クラスのリストのソート1(IComparableインタフェース)
・自作クラスのリストのソート2(IComparerインタフェース)
(※).NET Framework version 2.0新機能


コメント