CA1310:为了确保正确,请指定 StringComparison

规则 ID CA1310
类别 全球化
修复是中断修复还是非中断修复 非中断

原因

字符串比较操作使用未设置 StringComparison 参数的方法重载,并默认使用区域性特定的字符串比较。 因此,它的行为会因当前用户的区域设置而异。

规则说明

默认使用区域性特定字符串比较的字符串比较方法可能具有与用户意图不匹配的潜在意外运行时行为。 建议使用具有 StringComparison 参数的重载,以确保意图的正确性和清晰性。

此规则将标记默认使用区域性特定 StringComparison 值的字符串比较方法。 有关详细信息,请参阅使用当前区域性的字符串比较

注意

如果想查看所有字符串比较方法的冲突(无论该方法使用什么样的默认字符串比较),请转而使用 CA1307:指定 StringComparison 以确保清晰性

如何解决冲突

若要解决此规则的冲突,请将字符串比较方法更改为接受 StringComparison 枚举作为参数的重载。 例如,将 String.Compare(str1, str2) 更改为 String.Compare(str1, str2, StringComparison.Ordinal)

何时禁止显示警告

当不打算本地化库或应用程序时,可禁止显示此规则的警告。

抑制警告

如果只想抑制单个冲突,请将预处理器指令添加到源文件以禁用该规则,然后重新启用该规则。

#pragma warning disable CA1310
// The code that's violating the rule is on this line.
#pragma warning restore CA1310

若要对文件、文件夹或项目禁用该规则,请在配置文件中将其严重性设置为 none

[*.{cs,vb}]
dotnet_diagnostic.CA1310.severity = none

若要禁用此整个规则类别,请在配置文件中将此类别的严重性设置为 none

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Globalization.severity = none

有关详细信息,请参阅如何禁止显示代码分析警告

请参阅