CA1311: укажите язык и региональные параметры или используйте инвариантную версию
Свойство | Значение |
---|---|
Идентификатор правила | CA1311 |
Заголовок | Указание языка и региональных параметров или использование инвариантной версии |
Категория | Глобализация |
Исправление является критическим или не критическим | Не критическое |
Включен по умолчанию в .NET 9 | No |
Причина
Вызов выполняется или 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
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.