Bagikan melalui


CA2015: Jangan tentukan finalizer untuk jenis yang berasal dari MemoryManager<T>

Properti Nilai
ID Aturan CA2015
Judul Jangan tentukan finalizer untuk jenis yang berasal dari MemoryManager<T>
Golongan Keandalan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Sebagai peringatan

Penyebab

Menentukan finalizer untuk jenis yang berasal dari MemoryManager<T>

Deskripsi aturan

Menambahkan finalizer ke jenis yang berasal kemungkinan MemoryManager<T> merupakan indikasi bug, karena menunjukkan sumber daya asli yang dapat dibagikan dalam Span<T> dibersihkan dan berpotensi saat masih digunakan oleh Span<T>.

Catatan

Kelas MemoryManager<T> ini ditujukan untuk skenario lanjutan. Sebagian besar pengembang tidak perlu menggunakannya.

Cara memperbaiki pelanggaran

Untuk memperbaiki pelanggaran, hapus definisi finalizer.

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);
}

Kapan harus menekan peringatan

Aman untuk menekan pelanggaran aturan ini jika niatnya adalah membuat finalizer untuk tujuan penelusuran kesalahan atau validasi.

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

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

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

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

Untuk menonaktifkan seluruh kategori aturan ini, atur tingkat keparahan untuk kategori ke none dalam file konfigurasi.

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

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Baca juga