[この記事は18年前に書かれました]
自作クラスのリストのソートを行う方法の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新機能
コメント