CompareOptions列挙型も、StringComparisonと同じく文字列比較の際の動作を指定するための列挙型ですが、StringComparisonよりも具体的な指定を行うことが出来ます。 StringComparisonの場合と異なり、StringクラスではCompareメソッドのみがCompareOptionsを指定した比較をサポートしています。
以下はString.CompareメソッドにCompareOptionsを指定して文字列の比較を行う例です。
CompareOptionsを指定して文字列の比較を行う
      Imports System
Imports System.Globalization
Imports System.Threading
Class Sample
  Shared Sub Main()
    Console.WriteLine("CompareOptions.None       : {0}", String.Compare("abc", "ABC", Thread.CurrentThread.CurrentCulture, CompareOptions.None))
    Console.WriteLine("CompareOptions.IgnoreCase : {0}", String.Compare("abc", "ABC", Thread.CurrentThread.CurrentCulture, CompareOptions.IgnoreCase))
  End Sub
End Class
実行結果
      CompareOptions.None : -1 CompareOptions.IgnoreCase : 0
CompareOptionsを指定する場合は、次の値を組み合わせて指定することができます。
| CompareOptionsの値 | 文字列比較時の動作 | 解説 | 
|---|---|---|
| None | デフォルトの動作で比較する | - | 
| IgnoreCase | 大文字小文字の違いを無視して比較する | 解説へ | 
| IgnoreKanaType | ひらがなとカタカナの違いを無視して比較する | |
| IgnoreWidth | 全角と半角の違いを無視して比較する | |
| IgnoreNonSpace | 濁点付きの文字、囲み文字や発音記号など、基本となる文字と修飾記号の組み合わせになる文字について、非スペーシング組み合わせ文字となる修飾記号を無視して比較する (例として、 "えと"と"えど"、"cafe"と"café"、"1"と"①"は同じ文字列として扱われる) | 解説へ | 
| IgnoreSymbols | 空白文字・句読点・その他の記号を無視して比較する (例として、 "Hello, world!"と"Helloworld"は同じ文字列として扱われる) | 解説へ | 
| StringSort | ハイフン・アポストロフィが英数字や他の記号よりも前になるように比較する (例として、 "can't"は"cant"より小さいとして扱われる) | 解説へ | 
| Ordinal | 文字列の各文字を数値(Unicode序数、Unicode ordinal)=コードポイントで比較する | (StringComparison.Ordinalと同じ) | 
| OrdinalIgnoreCase | 文字列の各文字を数値(Unicode序数、Unicode ordinal)=コードポイントで比較する 大文字小文字の違いは無視する | (StringComparison.OrdinalIgnoreCaseと同じ) | 
個々のオプションと動作の詳細については追って解説します。 なお、OrdinalおよびOrdinalIgnoreCaseは他の値とは組み合わせることはできないため、単独で使用する必要があります。
ソートやDictionaryのキー比較にCompareOptionsを使用する方法については§.CompareOptionsに対応するStringComparerの取得で追って解説します。