Ostrzeżenie CA2015: Nie należy definiować finalizatorów dla typów pochodzących z memoryManager<T>

Reguła analizatora kodu platformy .NET CA2015 jest domyślnie włączona, począwszy od platformy .NET 5. Tworzy ostrzeżenie kompilacji dla dowolnego typu pochodzącego z MemoryManager<T> tego elementu definiującego finalizator.

Opis zmiany

Począwszy od platformy .NET 5, zestaw .NET SDK zawiera analizatory kodu źródłowego platformy .NET. Kilka z tych reguł jest domyślnie włączonych, w tym CA2015. Jeśli projekt zawiera kod, który narusza tę regułę i jest skonfigurowany do traktowania ostrzeżeń jako błędów, ta zmiana może spowodować przerwanie kompilacji.

Typy flag reguł CA2015, które pochodzą z MemoryManager<T> tej definicji finalizatora. Dodanie finalizatora do typu, który pochodzi z MemoryManager<T> , jest prawdopodobnie wskazaniem usterki. Sugeruje to, że zasób macierzysty, który mógł zostać uzyskany w obiekcie Span<T> , jest czyszczony, potencjalnie, gdy jest nadal używany przez Span<T>element .

Wprowadzona wersja

5,0

  • Usuń definicję finalizatora. Aby uzyskać więcej informacji, zobacz CA2015.

  • Aby całkowicie wyłączyć analizę kodu, ustaw wartość EnableNETAnalyzers na false w pliku projektu. Aby uzyskać więcej informacji, zobacz EnableNETAnalyzers.

Dotyczy interfejsów API

Nie można wykryć za pośrednictwem analizy interfejsu API.