.NET IDisposable Pattern menyiratkan bahwa jika Anda menulis finalizer, dan mengimplementasikan IDisposable, finalizer Anda perlu secara eksplisit memanggil Dispose. Ini logis, dan itulah yang selalu saya lakukan dalam situasi langka di mana seorang finalis dijamin.
Namun, apa yang terjadi jika saya hanya melakukan ini:
class Foo : IDisposable
{
public void Dispose(){ CloseSomeHandle(); }
}
dan tidak menerapkan finalizer, atau apa pun. Akankah kerangka kerja memanggil metode Buang untuk saya?
Ya, saya menyadari ini terdengar bodoh, dan semua logika menyiratkan bahwa itu tidak akan terjadi, tetapi saya selalu memiliki 2 hal di belakang kepala saya yang membuat saya tidak yakin.
Seseorang beberapa tahun yang lalu pernah mengatakan kepada saya bahwa itu sebenarnya akan melakukan ini, dan orang itu memiliki rekam jejak yang sangat kuat dalam "mengetahui barang-barang mereka."
Kompilator / kerangka kerja melakukan hal-hal 'ajaib' lain tergantung pada antarmuka apa yang Anda terapkan (misalnya: foreach, metode ekstensi, serialisasi berdasarkan atribut, dll), jadi masuk akal bahwa ini mungkin juga 'ajaib'.
Sementara saya sudah membaca banyak hal tentang hal itu, dan sudah ada banyak hal tersirat, aku tidak pernah bisa menemukan definitif Ya atau Tidak ada jawaban untuk pertanyaan ini.