自作クラスのリストのソート3(Comparisonデリゲート)

自作クラスのリストのソートを行う方法の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新機能

0 件のコメント :

コメントを投稿