Pertanyaan Anda tentang apakah Anda harus selalu menelepon atau tidak Dispose
biasanya 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 Dispose
tidak wajib sangatlah lemah. Dia memberikan dua contoh untuk membenarkan pendapatnya.
Dalam contoh pertama, dia mengatakan memanggil Dispose
kontrol Windows Forms membosankan dan tidak perlu dalam skenario umum. Namun, ia gagal menyebutkan bahwa Dispose
sebenarnya 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.WaitHandle
harus 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 IAsyncResult
itu sendiri tidak mematuhi pedoman yang diterbitkan Microsoft sendiri untuk menangani IDisposable
objek. Yaitu jika sebuah kelas memiliki referensi ke suatu IDisposable
tipe maka kelas itu sendiri harus diimplementasikan IDisposable
. Jika IAsyncResult
mengikuti aturan itu maka Dispose
metodenya 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.
using
konstruksi.