CA2015: Nedefinujte finalizační metody pro typy odvozené z memoryManager<T>

Vlastnost Hodnota
ID pravidla CA2015
Název Nedefinujte finalizační metody pro typy odvozené z MemoryManager<T.>
Kategorie Spolehlivost
Oprava, která může být destruktivní nebo nedestruktivní Nezlomitelný
Povoleno ve výchozím nastavení v .NET 10 Jako upozornění
Příslušné jazyky C# a Visual Basic

Příčina

Definování finalizátorů pro typy odvozené od MemoryManager<T>

Popis pravidla

Přidání finalizátoru do typu odvozeného z MemoryManager<T> pravděpodobně naznačuje chybu, protože to signalizuje nativní prostředek, který mohl být poskytnut v Span<T>, který je vyčišťován možná i v době, kdy je stále používán Span<T>.

Poznámka:

Třída MemoryManager<T> je určená pro pokročilé scénáře. Většina vývojářů ho nemusí používat.

Jak opravit porušení

Chcete-li opravit porušení, odeberte definici finalizátoru.

class DerivedClass <T> : MemoryManager<T>
{
    public override bool Dispose(bool disposing)
    {
        if (disposing)
        {
            _handle.Dispose();
        }
    }

    ...

    // Violation occurs, remove the finalizer to fix the warning.
    ~DerivedClass() => Dispose(false);
}

Kdy potlačit upozornění

Je bezpečné potlačit porušení tohoto pravidla, pokud je záměrem vytvořit finalizační metodu pro účely ladění nebo ověřování.

Potlačení upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

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

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.

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

Chcete-li tuto celou kategorii pravidel zakázat, nastavte závažnost kategorie na none hodnotu v konfiguračním souboru.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Reliability.severity = none

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Viz také