2つ目は、SortメソッドとComparison<T>デリゲートを組み合わせる方法です。 Sortメソッドに特に引数を指定しない場合、Sortメソッドはデフォルト(つまり昇順)の並び替え順序でソートします。 Sortメソッドの引数に並び替え順序を定義したメソッドを表すComparison<T>デリゲートを指定すると、その順序に従ってソートするようになります。
したがって、降順に並び替えるよう動作を定義するメソッドを用意してそれをSortメソッドに渡すことにより、降順にソートする事ができます。 なお、この方法はComparison<T>デリゲートを引数にとることが出来るArray.SortメソッドとList.Sortメソッドで使うことが出来ます。 (ArrayList.SortメソッドではIComparerを指定する必要があります)
SortメソッドとComparison<T>デリゲートを使ってListを降順にソートする
      Imports System
Imports System.Collections.Generic
Class Sample
  ' 二つのIntegerを比較するためのメソッド
  Shared Function CompareDescending(ByVal x As Integer, ByVal y As Integer) As Integer
    Return y.CompareTo(x)
    ' 単に次のようにしても同じ結果となる
    ' Return y - x
    ' Return -x.CompareTo(y)
    ' 参考までに、昇順の場合は次のように記述する
    ' Return x.CompareTo(y)
    ' Return x - y
  End Function
  Shared Sub Main()
    ' ソート対象のList(Of Integer)
    Dim list As New List(Of Integer)(New Integer() {5, 2, 3, 1, 4})
    ' ソート
    list.Sort(AddressOf CompareDescending)
    ' 降順にソートして表示
    For Each val As Integer In list
      Console.Write("{0}, ", val)
    Next
    Console.WriteLine()
  End Sub
End Class
       
      実行結果
      5, 4, 3, 2, 1,
SortメソッドとComparison<T>デリゲートについては、複合型のソート・複数キーでのソートでも改めて解説します。
Sortメソッドと型ごとのデフォルトのソート順については基本型とデフォルトのソート順で解説しています。