CA1311: укажите язык и региональные параметры или используйте инвариантную версию

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

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

См. также