2つ目は、SortメソッドとComparison<T>デリゲートを組み合わせる方法です。 Sortメソッドに特に引数を指定しない場合、Sortメソッドはデフォルト(つまり昇順)の並び替え順序でソートします。 Sortメソッドの引数に並び替え順序を定義したメソッドを表すComparison<T>デリゲートを指定すると、その順序に従ってソートするようになります。

したがって、降順に並び替えるよう動作を定義するメソッドを用意してそれをSortメソッドに渡すことにより、降順にソートする事ができます。 なお、この方法はComparison<T>デリゲートを引数にとることが出来るArray.SortメソッドList.Sortメソッドで使うことが出来ます。 (ArrayList.SortメソッドではIComparerを指定する必要があります)

SortメソッドとComparison<T>デリゲートを使ってListを降順にソートする
using System;
using System.Collections.Generic;

class Sample {
  // 二つのintを比較するためのメソッド
  static int CompareDescending(int x, int y)
  {
    return y.CompareTo(x);
    // 単に次のようにしても同じ結果となる
    // return y - x;
    // return -x.CompareTo(y);

    // 参考までに、昇順の場合は次のように記述する
    // return x.CompareTo(y);
    // return x - y;
  }

  static void Main()
  {
    // ソート対象のList<int>
    List<int> list = new List<int>(new int[] {5, 2, 3, 1, 4});

    // ソート
    list.Sort(CompareDescending);

    foreach (int val in list) {
      Console.Write("{0}, ", val);
    }
    Console.WriteLine();
  }
}
実行結果
5, 4, 3, 2, 1, 

SortメソッドとComparison<T>デリゲートについては、複合型のソート・複数キーでのソートでも改めて解説します。

Sortメソッドと型ごとのデフォルトのソート順については基本型とデフォルトのソート順で解説しています。