CA1043: Use o argumento integral ou string para indexadores
Property | valor |
---|---|
ID da regra | CA1043 |
Título | Usar argumento integral ou de cadeia de caracteres para indexadores |
Categoria | Desenho |
A correção está quebrando ou não quebrando | Quebrando |
Habilitado por padrão no .NET 9 | Não |
Motivo
Um tipo contém um indexador que usa um tipo de índice diferente de System.Int32, System.Int64, System.Object, ou System.String.
Por padrão, essa regra examina apenas tipos visíveis externamente, mas isso é configurável.
Descrição da regra
Os indexadores, ou seja, propriedades indexadas, devem usar tipos inteiros ou de cadeia de caracteres para o índice. Esses tipos são normalmente usados para indexar estruturas de dados e aumentar a usabilidade da biblioteca. O uso do Object tipo deve ser restrito aos casos em que o inteiro específico ou o tipo de cadeia de caracteres não pode ser especificado em tempo de design. Se o design exigir outros tipos para o índice, reconsidere se o tipo representa um armazenamento de dados lógico. Se ele não representar um armazenamento de dados lógico, use um método.
Como corrigir violações
Para corrigir uma violação dessa regra, altere o índice para um inteiro ou tipo de cadeia de caracteres ou use um método em vez do indexador.
Quando suprimir avisos
Suprima um aviso dessa regra somente depois de considerar cuidadosamente a necessidade do indexador não padrão.
Suprimir um aviso
Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.
#pragma warning disable CA1043
// The code that's violating the rule is on this line.
#pragma warning restore CA1043
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA1043.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.
Configurar código para análise
Use a opção a seguir para configurar em quais partes da sua base de código executar essa regra.
Você pode configurar essa opção apenas para esta regra, para todas as regras às quais ela se aplica ou para todas as regras nesta categoria (Design) às quais ela se aplica. Para obter mais informações, consulte Opções de configuração da regra de qualidade de código.
Incluir superfícies de API específicas
Você pode configurar em quais partes da sua base de código executar essa regra, com base em sua acessibilidade. Por exemplo, para especificar que a regra deve ser executada somente na superfície de API não pública, adicione o seguinte par chave-valor a um arquivo .editorconfig em seu projeto:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Exemplo
O exemplo a seguir mostra um indexador que usa um Int32 índice.
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