String.CompareOrdinalメソッドは、Compareメソッド同様に文字列の比較を行う静的メソッドですが、比較の際に文字列の各文字を数値(Unicode序数Unicode ordinal)、つまり各文字のコードポイントでの比較を行う点で動作が異なります。

Compareメソッドでオプションを特に指定しない場合、現在のスレッドの(もしくは引数で指定された)カルチャの規則にしたがった比較を行うのに対し、CompareOrdinalメソッドでは常にカルチャに依存しない比較が行われます。

String.CompareOrdinalメソッドでコードポイントによって文字列を比較する
Imports System

Class Sample
  Shared Sub Main()
    Dim p1 As String() = New String() {"abc", "abd"}
    Dim p2 As String() = New String() {"coop", "co-op"}
    Dim p3 As String() = New String() {"cant", "can't"}

    Console.WriteLine("Compare       ({0}, {1}) : {2}", p1(0), p1(1), String.Compare(p1(0), p1(1)))
    Console.WriteLine("CompareOrdinal({0}, {1}) : {2}", p1(0), p1(1), String.CompareOrdinal(p1(0), p1(1)))

    Console.WriteLine("Compare       ({0}, {1}) : {2}", p2(0), p2(1), String.Compare(p2(0), p2(1)))
    Console.WriteLine("CompareOrdinal({0}, {1}) : {2}", p2(0), p2(1), String.CompareOrdinal(p2(0), p2(1)))

    Console.WriteLine("Compare       ({0}, {1}) : {2}", p3(0), p3(1), String.Compare(p3(0), p3(1)))
    Console.WriteLine("CompareOrdinal({0}, {1}) : {2}", p3(0), p3(1), String.CompareOrdinal(p3(0), p3(1)))
  End Sub
End Class
実行結果
Compare       (abc, abd) : -1
CompareOrdinal(abc, abd) : -1
Compare       (coop, co-op) : -1
CompareOrdinal(coop, co-op) : 66
Compare       (cant, can't) : -1
CompareOrdinal(cant, can't) : 77

CompareメソッドとCompareOrdinalメソッドで大小関係が反転している箇所に注目してください。

CompareTo・Compare・Equalsの各メソッドでも、StringComparisonを指定することによってCompareOrdinalメソッドと同様の比較方法を使用するように指定できます。 これについては文字列と比較オプション・カルチャの並べ替え規則 §.StringComparison列挙型とStringComparerクラスで詳しく説明しています。