Pertanyaan Anda tentang apakah Anda harus selalu menelepon atau tidak Disposebiasanya merupakan perdebatan sengit. Lihat blog ini untuk perspektif yang menarik dari individu yang dihormati di komunitas .NET.
Secara pribadi, saya pikir posisi Jeffrey Richter bahwa panggilan Disposetidak wajib sangatlah lemah. Dia memberikan dua contoh untuk membenarkan pendapatnya.
Dalam contoh pertama, dia mengatakan memanggil Disposekontrol Windows Forms membosankan dan tidak perlu dalam skenario umum. Namun, ia gagal menyebutkan bahwa Disposesebenarnya dipanggil secara otomatis oleh wadah kontrol dalam skenario arus utama tersebut.
Dalam contoh kedua dia menyatakan bahwa pengembang mungkin salah berasumsi bahwa instance dari IAsyncResult.WaitHandleharus dibuang secara agresif tanpa menyadari bahwa properti dengan malas menginisialisasi pegangan tunggu yang mengakibatkan penalti kinerja yang tidak perlu. Tapi, masalah dengan contoh ini adalah bahwa IAsyncResultitu sendiri tidak mematuhi pedoman yang diterbitkan Microsoft sendiri untuk menangani IDisposableobjek. Yaitu jika sebuah kelas memiliki referensi ke suatu IDisposabletipe maka kelas itu sendiri harus diimplementasikan IDisposable. Jika IAsyncResultmengikuti aturan itu maka Disposemetodenya sendiri bisa membuat keputusan mengenai anggota konstituen mana yang perlu dibuang.
Jadi, kecuali seseorang memiliki argumen yang lebih meyakinkan, saya akan tetap berada di kamp "selalu hubungi Buang" dengan pemahaman bahwa akan ada beberapa kasus pinggiran yang sebagian besar muncul karena pilihan desain yang buruk.
usingkonstruksi.