Megosztás a következőn keresztül:


CA1822: Tagok megjelölése statikusként

Tulajdonság Érték
Szabályazonosító CA1822
Cím Tagok megjelölése statikusként
Kategória Teljesítmény
A javítás kompatibilitástörő vagy nem törik Nem törés – Ha a tag nem látható a szerelvényen kívül, a módosítástól függetlenül.

Nem kompatibilitástörő – Ha csak a kulcsszóval rendelkező példánytagra módosítja a this tagot.

Kompatibilitástörő – Ha a tagot egy példánytagról statikus tagra módosítja, és az a szerelvényen kívül látható.
Alapértelmezés szerint engedélyezve a .NET 8-ban Javaslatként

Ok

A példányadatokhoz nem hozzáférő tag nincs statikusként megjelölve (a Visual Basicben megosztva).

Szabály leírása

Azok a tagok, amelyek nem férnek hozzá a példányadatokhoz vagy a híváspéldány-metódusokhoz, statikusként (a Visual Basicben megosztva) jelölhetők meg. Miután statikusként jelölte meg a metódusokat, a fordító nemvirtual hívási webhelyeket bocsát ki ezeknek a tagoknak. A nemvirtual híváswebhelyek kibocsátásakor minden hívás futásidőben történő ellenőrzése megakadályozza, hogy az aktuális objektummutató nem null értékű legyen. Ez mérhető teljesítménynövekedést érhet el a teljesítményérzékeny kód esetében. Bizonyos esetekben az aktuális objektumpéldány elérésének sikertelensége helyességi problémát jelent.

Szabálysértések kijavítása

Jelölje meg a tagot statikusként (vagy a Visual Basicben megosztva), vagy használja az "this"/'Me" kifejezést a metódus törzsében, ha szükséges.

Mikor kell letiltani a figyelmeztetéseket?

A szabályból származó figyelmeztetést nyugodtan letilthatja a korábban kiszállított kód esetében, amely esetében a javítás kompatibilitástörő változást jelentene.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

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

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

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

További információ: Kódelemzési figyelmeztetések letiltása.

Kód konfigurálása elemzéshez

A következő beállítással konfigurálhatja, hogy a kódbázis mely részein futtassa ezt a szabályt.

Ezt a beállítást konfigurálhatja csak erre a szabályra, az összes szabályra, vagy az ebben a kategóriában (Teljesítmény) érvényes összes szabályra. További információ: Kódminőségi szabály konfigurációs beállításai.

Adott API-felületek belefoglalása

A kódbázis azon részeit konfigurálhatja, amelyeken futtathatja ezt a szabályt az akadálymentességük alapján. Ha például meg szeretné adni, hogy a szabály csak a nem nyilvános API-felületen fusson, adja hozzá a következő kulcs-érték párot a projekt egyik .editorconfig fájljához:

dotnet_code_quality.CAXXXX.api_surface = private, internal