CA1311:指定区域性或使用固定版本
属性 | 值 |
---|---|
规则 ID | CA1311 |
标题 | 指定区域性或使用固定版本 |
类别 | 全球化 |
修复是中断修复还是非中断修复 | 非中断 |
在 .NET 8 中默认启用 | 否 |
原因
调用 String.ToUpper() 或 String.ToLower() 但不指定区域性。
规则说明
指定区域性或使用固定区域性,以避免在调用 ToUpper
或 ToLower
时隐式依赖当前区域性。 无论应用程序的区域性如何,使用固定区域性都会生成一致的结果。
如何解决冲突
不要调用无参数的 String.ToUpper() 或 String.ToLower() 方法,而是调用 ToUpper(CultureInfo) 或 ToUpperInvariant(),或者调用 ToLower(CultureInfo) 或 ToLowerInvariant()。
示例
以下代码片段演示了规则 CA1311 冲突:
string s = "hello";
s = s.ToLower();
Dim s As String = "hello"
s.ToLower()
以下代码片段修复了冲突:
string s = "hello";
s = s.ToLowerInvariant();
Dim s As String = "hello"
s.ToLowerInvariant()
何时禁止显示警告
如果确定 Thread.CurrentCulture 永远不会更改,则可以安全地禁止显示来自此规则的警告。
抑制警告
如果只想抑制单个冲突,请将预处理器指令添加到源文件以禁用该规则,然后重新启用该规则。
#pragma warning disable CA1311
// The code that's violating the rule is on this line.
#pragma warning restore CA1311
若要对文件、文件夹或项目禁用该规则,请在配置文件中将其严重性设置为 none
。
[*.{cs,vb}]
dotnet_diagnostic.CA1311.severity = none
有关详细信息,请参阅如何禁止显示代码分析警告。