コードインスペクション: String.CompareTo はカルチャ固有のです。
このインスペクションは、 文字列変換で明示的にカルチャを指定すると同様に、異なるカルチャ設定のマシンでコードを実行する際の問題を回避できます。
String.CompareTo を使用して文字列を比較する場合、比較結果はマシンのロケールに応じて異なる場合があります。 標準的な例はトルコ語で、小文字のドットなしの「ı」とそれに対応する大文字の「I」があり、小文字の「i」とドット付きの大文字の「İ」があります。 その結果、以下のメソッドは、異なるカルチャ設定のマシンで異なる結果を返す可能性があります。
この問題を解決するために、JetBrains Rider は、メソッド呼び出しにカルチャ不変の StringComparison.Ordinal を明示的に追加することを提案します。
private int Foo(string s1, string s2)
{
//do something
// 's1' will be compared to 's2'
// according to the current
// culture settings
// Warning: String.CompareTo
// is culture-specific
return s1.CompareTo(s2);
}
private int Foo(string s1, string s2)
{
//do something
return String.Compare(s1, s2,
StringComparison.Ordinal);
}
2026 年 6 月 12 日