CA1043: Använd integral- eller strängargument för indexerare

Egenskap Värde
Regel-ID CA1043
Title Använda integral- eller strängargument för indexerare
Kategori Design
Korrigeringen är antingen invasiv eller icke-invasiv Avbrott
Aktiverad som standard i .NET 10 Nej
Tillämpliga språk C# och Visual Basic

Orsak

En typ innehåller en indexerare som använder en annan indextyp än System.Int32, System.Int64, System.Objecteller System.String.

Som standard tittar den här regeln bara på externt synliga typer, men det kan konfigureras.

Regelbeskrivning

Indexerare, d.v.s. indexerade egenskaper, bör använda heltal eller strängtyper för indexet. Dessa typer används vanligtvis för indexering av datastrukturer och ökar bibliotekets användbarhet. Användningen av Object typ bör begränsas till de fall där specifik heltals- eller strängtyp inte kan anges vid designtillfället. Om designen kräver andra typer av index bör du överväga om typen representerar ett logiskt datalager. Om det inte representerar ett logiskt datalager använder du en metod.

Så här åtgärdar du överträdelser

Om du vill åtgärda ett brott mot den här regeln ändrar du indexet till ett heltal eller en strängtyp eller använder en metod i stället för indexeraren.

När du ska ignorera varningar

Ignorera en varning från den här regeln först efter att noggrant ha övervägt behovet av den icke-standardiserade indexeringsfunktionen.

Ignorera en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

#pragma warning disable CA1043
// The code that's violating the rule is on this line.
#pragma warning restore CA1043

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

[*.{cs,vb}]
dotnet_diagnostic.CA1043.severity = none

Mer information finns i Så här utelämnar du kodanalysvarningar.

Konfigurera kod för analys

Använd följande alternativ för att konfigurera vilka delar av kodbasen som regeln ska köras på.

Du kan konfigurera det här alternativet för bara den här regeln, för alla regler som gäller för eller för alla regler i den här kategorin (design) som den gäller för. Mer information finns i Konfigurationsalternativ för kodkvalitetsregel.

Inkludera specifika ytor för API:er

Du kan konfigurera vilka delar av kodbasen som ska köra den här regeln baserat på deras tillgänglighet genom att ange alternativet api_surface. Om du till exempel vill ange att regeln endast ska köras mot den icke-offentliga API-ytan lägger du till följande nyckel/värde-par i en .editorconfig-fil i projektet:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Anteckning

Ersätt den XXXX delen av CAXXXX med ID:t för den tillämpliga regeln.

Exempel

I följande exempel visas en indexerare som använder ett Int32 index.

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