Melupuskan Cara Yang Betul: Melaksanakan IDisposable
Melaksanakan IDisposable membolehkan pelepasan deterministik sumber tidak terurus dan bahan pakai buang. Dalam coretan kod anda, kelas Pengguna tidak mengendalikan sumber yang tidak terurus atau rujukan boleh guna, jadi pelupusan tidak diperlukan. Ini boleh diselesaikan dengan menandakan kelas sebagai dimeterai, dengan berkesan menghalang kelas yang diperoleh daripada mengatasi IDisposable.
Untuk contoh yang lebih terperinci, mari kita pertimbangkan kelas yang dipanggil ResourceManager yang mengurus kedua-dua sumber yang tidak diurus (cth., pemegang fail) dan IDisposable rujukan (cth., sambungan pangkalan data).
Menggunakan IBuka guna dengan Sumber Tidak Terurus:
public class ResourceManager : IDisposable { private FileStream fileStream; public ResourceManager() { // Allocate and open the file handle fileStream = new FileStream("myfile.txt", FileMode.Open); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (disposing) { // Free managed resources fileStream?.Close(); fileStream?.Dispose(); } // Free native resources fileStream.Dispose(); } }
Menggunakan IBunga dengan Rujukan Pakai Buang:
public class ResourceManager : IDisposable { private DisposableReference reference; public ResourceManager() { // Obtain the disposable reference reference = new DisposableReference(); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (disposing) { // Free managed resources reference?.Dispose(); } } }
Atas ialah kandungan terperinci Bilakah Anda Harus Melaksanakan IDisposable dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!