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

C#

[この記事は14年前に書かれました]

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

コメント

タイトルとURLをコピーしました