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.
Aturan terkait
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk