StringComparison列挙型は、文字列比較の際の動作を指定するための列挙型で、次のメソッドにおいて文字列比較を行う際にオプションとして指定出来ます。

また、StringComparisonを指定する場合は、次のいずれかを指定できます。

StringComparisonの値と文字列比較時の動作
StringComparisonの値 文字列比較時の動作
大文字小文字の違い 比較の規則
StringComparison.CurrentCulture 無視しない 現在のカルチャの並べ替え規則に基づいて比較する
StringComparison.CurrentCultureIgnoreCase 無視する
StringComparison.InvariantCulture 無視しない インバリアントカルチャの並べ替え規則に基づいて比較する
StringComparison.InvariantCultureIgnoreCase 無視する
StringComparison.Ordinal 無視しない 文字列の各文字を数値(Unicode序数、Unicode ordinal)=コードポイントで比較する
StringComparison.OrdinalIgnoreCase 無視する

StringComparisonを指定しない場合は、StringComparison.CurrentCultureを指定した場合と同じ動作になります。

以下はStringComparisonを指定して比較を行う例です。

StringComparisonを指定して文字列同士の比較を行う
Imports System

Class Sample
  Shared Sub Main()
    Dim s1 As String = "foo"
    Dim s2 As String = "FOO"

    ' 以下の2つは同じ動作となる
    Console.WriteLine(s1.Equals(s2))
    Console.WriteLine(s1.Equals(s2, StringComparison.CurrentCulture))

    ' 以下の2つは同じ動作となる
    Console.WriteLine(String.Equals(s1, s2))
    Console.WriteLine(String.Equals(s1, s2, StringComparison.CurrentCulture))

    ' 以下の2つは同じ動作となる
    Console.WriteLine(String.Compare(s1, s2))
    Console.WriteLine(String.Compare(s1, s2, StringComparison.CurrentCulture))

    Console.WriteLine("[IgnoreCase]")

    ' 大文字小文字を無視する/しない比較
    Console.WriteLine(String.Equals(s1, s2, StringComparison.CurrentCultureIgnoreCase))
    Console.WriteLine(String.Equals(s1, s2, StringComparison.CurrentCulture))

    Console.WriteLine(String.Compare(s1, s2, StringComparison.CurrentCultureIgnoreCase))
    Console.WriteLine(String.Compare(s1, s2, StringComparison.CurrentCulture))
  End Sub
End Class
実行結果
False
False
False
False
-1
-1
[IgnoreCase]
True
False
0
-1

それぞれの違いについての具体的な解説は§.CurrentCultureとInvariantCultureの違い§.CurrentCultureとOrdinalの違いにて、また使い分ける際の考え方については§.StringComparisonの使い分けで別途解説します。

全角と半角の違い・ひらがなとカタカナの違いを扱いたい場合はCompareOptions列挙型を使用することができます。

カルチャについてはカルチャの基本とカルチャ情報を、特にインバリアントカルチャについてはカルチャの基本とカルチャ情報 §.インバリアントカルチャを参照してください。