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の値
      using System;
using System.Globalization;
using System.Threading;
class Sample {
  static void Main()
  {
    var p1 = new string[] {"coop", "co-op"};
    var p2 = new string[] {"亜", "井"};
    var c = 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));
  }
}
実行結果
      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の違いもあわせて参照してください。