CA2221: Finalizatory powinny być chronione
Pozycja | Wartość |
---|---|
Ruleid | CA2221 |
Kategoria | Microsoft.Usage |
Zmiana powodująca niezgodność | Niezgodność |
Przyczyna
Typ publiczny implementuje finalizator, który nie określa dostępu rodziny (chronionej).
Uwaga
Ta reguła została przestarzała. Aby uzyskać więcej informacji, zobacz Przestarzałe reguły.
Opis reguły
Finalizatory muszą korzystać z modyfikatora dostępu „family”. Ta reguła jest wymuszana przez kompilatory języków C#, Visual Basic i C++.
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły, zmień finalizator tak, aby był dostępny dla rodziny.
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżeń dla tej reguły.
Przykład
Nie można naruszyć tej reguły w żadnym języku platformy .NET wysokiego poziomu; Może to być naruszone, jeśli piszesz język microsoft intermediate language.
// =============== CLASS MEMBERS DECLARATION ===================
// note that class flags, 'extends' and 'implements' clauses
// are provided here for information only
.namespace UsageLibrary
{
.class public auto ansi beforefieldinit FinalizeMethodNotProtected
extends [mscorlib]System.Object
{
.method public hidebysig instance void
Finalize() cil managed
{
// Code size 1 (0x1)
.maxstack 0
IL_0000: ret
} // end of method FinalizeMethodNotProtected::Finalize
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 1
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method FinalizeMethodNotProtected::.ctor
} // end of class FinalizeMethodNotProtected
} // end of namespace
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla