Udostępnij za pośrednictwem


CA1822: Oznacz elementy członkowskie jako statyczne

Właściwości Wartość
Identyfikator reguły CA1822
Tytuł Oznaczaj składowe jako statyczne
Kategoria Wydajność
Poprawka powodująca niezgodność lub niezgodność Niezgodność — jeśli element członkowski nie jest widoczny poza zestawem, niezależnie od wprowadzania zmian.

Niezgodność — jeśli po prostu zmienisz element członkowski wystąpienia na element członkowski wystąpienia za pomocą słowa kluczowego this .

Niezgodność — jeśli zmienisz element członkowski z elementu członkowskiego wystąpienia na statyczny element członkowski i będzie widoczny poza zestawem.
Domyślnie włączone na platformie .NET 9 Jako sugestia

Przyczyna

Element członkowski, który nie uzyskuje dostępu do danych wystąpienia, nie jest oznaczony jako statyczny (udostępniony w Visual Basic).

Opis reguły

Elementy członkowskie, które nie uzyskują dostępu do danych wystąpienia lub wywołają metody wystąpienia, mogą być oznaczone jako statyczne (udostępnione w Visual Basic). Po oznaczeniu metod jako statyczne kompilator wygeneruje niewirtualne wywołania do tych członków. Emitowanie lokacji niewirtualnych wywołań uniemożliwi sprawdzenie w czasie wykonywania dla każdego wywołania, które gwarantuje, że bieżący wskaźnik obiektu ma wartość inną niż null. Może to osiągnąć wymierny wzrost wydajności dla kodu wrażliwego na wydajność. W niektórych przypadkach błąd dostępu do bieżącego wystąpienia obiektu reprezentuje problem z poprawnością.

Jak naprawić naruszenia

Oznacz element członkowski jako statyczny (lub udostępniony w Visual Basic) lub użyj wartości "this"/"Me" w treści metody, jeśli jest to konieczne.

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć ostrzeżenie z tej reguły dla wcześniej wysłanego kodu, dla którego poprawka byłaby zmianą powodującą niezgodność.

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 CA1822
// The code that's violating the rule is on this line.
#pragma warning restore CA1822

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

[*.{cs,vb}]
dotnet_diagnostic.CA1822.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 (wydajność), 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