.NET IDisposable Pattern , bir sonlandırıcı yazar ve IDisposable uygularsanız sonlandırıcının açıkça Dispose'i çağırması gerektiğini belirtir. Bu mantıklı ve sonlandırıcının garanti edildiği nadir durumlarda her zaman yaptığım şey bu.
Ancak, sadece bunu yaparsam ne olur:
class Foo : IDisposable
{
public void Dispose(){ CloseSomeHandle(); }
}
ve bir sonlandırıcı veya başka bir şey uygulamayın. Çerçeve benim için Dispose yöntemini çağıracak mı?
Evet, bunun kulağa aptalca geldiğini anlıyorum ve tüm mantık olmayacağını ima ediyor, ama kafamın arkasında her zaman beni emin kılan 2 şey vardı.
Birkaç yıl önce birileri bir keresinde bunun gerçekten yapacağını söyledi ve bu kişi "eşyalarını bilme" konusunda çok sağlam bir sicile sahipti.
Derleyici / çerçeve, hangi arabirimleri uyguladığınıza bağlı olarak diğer 'sihirli' şeyler yapar (ör: foreach, genişletme yöntemleri, niteliklere dayalı serileştirme, vb.), Bu da bunun 'sihir' olabileceği mantıklıdır.
Bununla ilgili birçok şey okurken ve ima edilen birçok şey olsa da, bu soruya kesin bir Evet veya Hayır yanıtı bulamadım .