ReSharper 2025.2 Help

代码检查: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); }
最后修改日期: 2025年 9月 27日