StringComparisonを指定した場合と同じ比較処理をCompareOptionsでも行うことが出来ます。 以下の表は、StringComparisonの値と、対応するCompareOptionsとCultureInfoの値の組み合わせです。
StringComparisonの値 | 対応するCompareOptionsとCultureInfoの組み合わせ | |
---|---|---|
CompareOptions | CultureInfo | |
StringComparison.Ordinal | CompareOptions.Ordinal | (任意のCultureInfo) |
StringComparison.OrdinalIgnoreCase | CompareOptions.OrdinalIgnoreCase | (任意のCultureInfo) |
StringComparison.CurrentCulture | CompareOptions.None | CultureInfo.CurrentCulture (またはThread.CurrentThread.CurrentCulture) |
StringComparison.CurrentCultureIgnoreCase | CompareOptions.IgnoreCase | CultureInfo.CurrentCulture (またはThread.CurrentThread.CurrentCulture) |
StringComparison.InvariantCulture | CompareOptions.None | CultureInfo.InvariantCulture |
StringComparison.InvariantCultureIgnoreCase | CompareOptions.IgnoreCase | CultureInfo.InvariantCulture |
次の例は、同じ比較処理をStringComparisonで指定した場合とCompareOptionsで指定した場合の例です。 記述は異なりますが、結果は同じです。
StringComparisonと同等となるCompareOptionsの値
Imports System
Imports System.Globalization
Imports System.Threading
Class Sample
Shared Sub Main()
Dim p1 As String() = New String() {"coop", "co-op"}
Dim p2 As String() = New String() {"亜", "井"}
Dim c As CultureInfo = Thread.CurrentThread.CurrentCulture
Console.WriteLine(c)
Console.WriteLine("{0} {1}", p1(0), p1(1))
Console.WriteLine("Compare StringComparison.Ordinal : {0}", String.Compare(p1(0), p1(1), StringComparison.Ordinal))
Console.WriteLine("Compare StringComparison.CurrentCulture : {0}", String.Compare(p1(0), p1(1), StringComparison.CurrentCulture))
Console.WriteLine("Compare StringComparison.InvariantCulture : {0}", String.Compare(p1(0), p1(1), StringComparison.InvariantCulture))
Console.WriteLine("Compare CompareOptions.Ordinal : {0}", String.Compare(p1(0), p1(1), c, CompareOptions.Ordinal))
Console.WriteLine("Compare CompareOptions.None : {0}", String.Compare(p1(0), p1(1), c, CompareOptions.None))
Console.WriteLine("Compare CompareOptions.None (Invariant) : {0}", String.Compare(p1(0), p1(1), CultureInfo.InvariantCulture, CompareOptions.None))
Console.WriteLine("{0} {1}", p2(0), p2(1))
Console.WriteLine("Compare StringComparison.Ordinal : {0}", String.Compare(p2(0), p2(1), StringComparison.Ordinal))
Console.WriteLine("Compare StringComparison.CurrentCulture : {0}", String.Compare(p2(0), p2(1), StringComparison.CurrentCulture))
Console.WriteLine("Compare StringComparison.InvariantCulture : {0}", String.Compare(p2(0), p2(1), StringComparison.InvariantCulture))
Console.WriteLine("Compare CompareOptions.Ordinal : {0}", String.Compare(p2(0), p2(1), c, CompareOptions.Ordinal))
Console.WriteLine("Compare CompareOptions.None : {0}", String.Compare(p2(0), p2(1), c, CompareOptions.None))
Console.WriteLine("Compare CompareOptions.None (Invariant) : {0}", String.Compare(p2(0), p2(1), CultureInfo.InvariantCulture, CompareOptions.None))
End Sub
End Class
実行結果
ja-JP coop co-op Compare StringComparison.Ordinal : 66 Compare StringComparison.CurrentCulture : -1 Compare StringComparison.InvariantCulture : -1 Compare CompareOptions.Ordinal : 66 Compare CompareOptions.None : -1 Compare CompareOptions.None (Invariant) : -1 亜 井 Compare StringComparison.Ordinal : 7 Compare StringComparison.CurrentCulture : -1 Compare StringComparison.InvariantCulture : 1 Compare CompareOptions.Ordinal : 7 Compare CompareOptions.None : -1 Compare CompareOptions.None (Invariant) : 1
それぞれの結果の違いに関しては、§.CurrentCultureとInvariantCultureの違いおよび§.CurrentCultureとOrdinalの違いもあわせて参照してください。