CA1043: Dla indeksatorów używaj argumentów integral lub string

Właściwości Wartość
Identyfikator reguły CA1043
Stanowisko Używaj argumentów typu liczba całkowita lub ciąg dla indeksatorów
Kategoria Projekt
Poprawka powodująca niezgodność lub niezgodność Kluczowa
Domyślnie włączone na platformie .NET 8 Nie.

Przyczyna

Typ zawiera indeksator, który używa typu indeksu innego niż System.Int32, System.Int64, System.Objectlub System.String.

Domyślnie ta reguła analizuje tylko typy widoczne zewnętrznie, ale można to skonfigurować.

Opis reguły

Indeksatory, czyli właściwości indeksowane, powinny używać typów liczb całkowitych lub ciągów dla indeksu. Te typy są zwykle używane do indeksowania struktur danych i zwiększają użyteczność biblioteki. Object Użycie typu powinno być ograniczone do tych przypadków, w których nie można określić określonej liczby całkowitej lub typu ciągu w czasie projektowania. Jeśli projekt wymaga innych typów indeksu, rozważ, czy typ reprezentuje logiczny magazyn danych. Jeśli nie reprezentuje logicznego magazynu danych, użyj metody .

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły, zmień indeks na liczbę całkowitą lub typ ciągu lub użyj metody zamiast indeksatora.

Kiedy pomijać ostrzeżenia

Pomiń ostrzeżenie z tej reguły dopiero po rozważeniu potrzeby indeksatora niezgodnego z normą.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Konfigurowanie kodu do analizowania

Użyj następującej opcji, aby skonfigurować, które części bazy kodu mają być uruchamiane w tej regule.

Tę opcję można skonfigurować tylko dla tej reguły, dla wszystkich reguł, do których ma ona zastosowanie, lub dla wszystkich reguł w tej kategorii (Projekt), których dotyczy. Aby uzyskać więcej informacji, zobacz Opcje konfiguracji reguły jakości kodu.

Uwzględnij określone powierzchnie interfejsu API

Możesz skonfigurować, na których częściach bazy kodu ma być uruchamiana ta reguła, na podstawie ich ułatwień dostępu. Aby na przykład określić, że reguła powinna być uruchamiana tylko na powierzchni niepublicznego interfejsu API, dodaj następującą parę klucz-wartość do pliku editorconfig w projekcie:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Przykład

W poniższym przykładzie pokazano indeksator, który używa indeksu 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