CA1043: используйте целый или строковый аргумент для индексаторов
Свойство | Значение |
---|---|
Идентификатор правила | CA1043 |
Заголовок | Используйте целый или строковый аргумент для индексаторов |
Категория | Проектирование |
Исправление является критическим или не критическим | Критическое |
Включен по умолчанию в .NET 9 | No |
Причина
Тип содержит индексатор, использующий тип индекса, отличный от System.Int32, System.Int64, System.Object или System.String.
По умолчанию это правило проверяет только видимые извне типы, но это поведение можно настроить.
Описание правила
Индексаторы (индексированные свойства) должны использовать для индекса целочисленные или строковые типы. Эти типы обычно используются для индексации структур данных и повышения удобства использования библиотеки. Тип Object следует использовать только в том случае, если во время разработки невозможно указать определенный целочисленный или строковый тип. Если для создания индекса требуются другие типы, проверьте, представляет ли тип логическое хранилище данных. Если он не представляет логическое хранилище данных, используйте метод.
Устранение нарушений
Чтобы устранить нарушение этого правила, измените индекс на целочисленный или строковый тип или используйте метод вместо индексатора.
Когда лучше отключить предупреждения
Скрывайте предупреждения о нарушение этого правила только после тщательного рассмотрения необходимости в нестандартном индексаторе.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA1043
// The code that's violating the rule is on this line.
#pragma warning restore CA1043
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none
в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA1043.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.
Настройка кода для анализа
Используйте следующий параметр, чтобы выбрать части базы кода для применения этого правила.
Этот параметр можно настроить только для этого правила, для всех правил, к которым он применяется, или для всех правил в этой категории (конструкторе), к которым она применяется. Дополнительные сведения см. в статье Параметры конфигурации правила качества кода.
Включение определенных контактных зон API
Вы можете настроить, для каких частей базы кода следует выполнять это правило в зависимости от их доступности. Например, чтобы указать, что правило должно выполняться только для закрытой контактной зоны API, добавьте следующую пару "ключ-значение" в файл EDITORCONFIG в своем проекте:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Пример
В следующем примере показан индексатор, использующий индекс Int32.
string[] Month = new string[] { "Jan", "Feb", "..." };
public string this[int index]
{
get => Month[index];
}
Private month() As String = {"Jan", "Feb", "..."}
Default ReadOnly Property Item(index As Integer) As String
Get
Return month(index)
End Get
End Property