ReSharper 2025.3 ヘルプ

コード検査: String.CompareTo は文化固有のものです

このインスペクションは、文字列変換で明示的にカルチャを指定すると同様に、異なるカルチャ設定のマシンでコードを実行する際の問題を回避できます。

String.CompareTo を使用して文字列を比較する場合、比較結果はマシンのロケールに応じて異なる場合があります。標準的な例はトルコ語で、小文字のドットなしの「ı」とそれに対応する大文字の「I」があり、小文字の「i」とドット付きの大文字の「İ」があります。その結果、以下のメソッドは、異なるカルチャ設定のマシンで異なる結果を返す可能性があります。

この問題を解決するために、ReSharper は、メソッド呼び出しに明示的に文化不変 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); }
2024 年 4 月 08 日