続いて、CurrentCultureIgnoreCase
とInvariantCultureIgnoreCase
でも違いが現れる例を見てみます。
トルコ語においては、i(U+0069)とI(U+0049)は大文字小文字の関係にある同じ文字ではなくそれぞれ発音の異なる文字であり、iの大文字はI(U+0049)ではなくİ(U+0131)で、Iの小文字はi(U+0069)ではなくı(U+0130)となります。
そのため、ja-JP(日本語/日本)の場合はCurrentCultureIgnoreCase
で大文字小文字を無視するとi(U+0069)とI(U+0049)は同じ文字として扱われ、tr-TR(トルコ語/トルコ)ではiとIは大文字小文字を無視しても異なる文字として扱われます。 一方InvariantCultureIgnoreCase
の場合は、特定の言語に依存しない規則に基づいて比較されるため、ja-JPでもtr-TRでも大文字小文字を無視するとi(U+0069)とI(U+0049)は同じ文字として扱われます。
このように、特定の言語や文化圏に依存した規則に基づいて比較を行いたい場合はCurrentCulture
/CurrentCultureIgnoreCase
、特定の言語や文化圏に依存しない規則に基づいて比較を行いたい場合はInvariantCulture
/InvariantCultureIgnoreCase
を使用する必要があります。