自作クラスのリストのソート2(IComparerインタフェース)

自作クラスのリストのソートを行う方法の1つは、IComparerインタフェースを実装する comparerクラスを作成し、ソート時に指定する方法があります。




class Test
{
  private int num;
  public int Num { get { return num; } }

  public Test(int num)
  {
    this.num = num;
  }
}

class TestComparer : IComparer
{
  public int Compare(Test x, Test y)
  {
    return x.Num.CompareTo(y.Num);
  }
}

class Program
{  
  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(new TestComparer());

    foreach (Test test in list)
    {
      Console.WriteLine(test.Num);
    }
  }
}
出力: 1 3 5 8 この方法は、IComparableインタフェースを実装する方法と比べて Sort実行時に、comparerを指定するので自作クラスのソート方法を 切り替えられる利点があります。

関連記事 

  (※).NET Framework version 2.0新機能

0 件のコメント :

コメントを投稿