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