CA1043: Dla indeksatorów używaj argumentów integral lub string
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA1043 |
Tytuł | 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 9 | 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