CA1708: идентификаторы должны отличаться не только регистром

Свойство Значение
Идентификатор правила CA1708
Заголовок Идентификаторы должны отличаться не только прописными и строчными буквами
Категория Именование
Исправление является критическим или не критическим Критическое
Включен по умолчанию в .NET 8 No

Причина

Имена двух типов, членов, параметров или полных пространств имен идентичны, когда они преобразуются в нижний регистр.

По умолчанию это правило проверяет только видимые извне типы, члены и пространства имен, но это поведение можно настроить.

Описание правила

Идентификаторы пространств имен, типов, членов и параметров не могут отличаться только регистром знаков, поскольку языки программирования, поддерживаемые средой CLR, не обязательно учитывают регистр знаков. Например, Visual Basic является широко используемым языком, не учитывающим регистр.

Устранение нарушений

Выберите уникальное имя, если оно сравнивается с другими идентификаторами без учета регистра.

Когда лучше отключить предупреждения

Для этого правила отключать вывод предупреждений не следует. Библиотека может быть недоступна для использования на всех языках .NET.

Настройка кода для анализа

Используйте следующий параметр, чтобы выбрать части базы кода для применения этого правила.

Этот параметр можно настроить только для этого правила, для всех правил, к которым он применяется, или для всех правил в этой категории (именование), к которым она применяется. Дополнительные сведения см. в статье Параметры конфигурации правила качества кода.

Включение определенных контактных зон API

Вы можете настроить, для каких частей базы кода следует выполнять это правило в зависимости от их доступности. Например, чтобы указать, что правило должно выполняться только для закрытой контактной зоны API, добавьте следующую пару "ключ-значение" в файл EDITORCONFIG в своем проекте:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Пример нарушения

В следующем примере показано нарушение этого правила.

public class Class1
{
    protected string someName;
    public string SomeName => someName;
}

В следующем примере показан один из способов устранения нарушения

public class Class1
{
    protected string _someName;
    public string SomeName => _someName;
}