SORU
3 Aralık 2008, ÇARŞAMBA


C IDisposable vs bir yıkıcı kullanarak arasındaki fark nedir#?

Ne zaman bir yıkıcı aksine bir sınıf İDispose uygulamak istiyorsunuz? this article ama hala tam anlayamadım okudum.

Benim varsayım ben İDispose bir nesne üzerinde uygulamak, 'imha' çöp toplayıcı için bunu yapmak için bekliyor karşı. ben açıkça bu. Bu doğru mu?

Bu her zaman açıkça bir nesne Atmayın aramam gerektiğini anlamına mı geliyor? Bu sık kullanılan bazı örnekleri nelerdir?

CEVAP
3 Aralık 2008, ÇARŞAMBA


Bir sonlandırıcı (nam-ı diğer yıkıcı) bir parçası çöp toplama (GC) - belirsiz zaman (ve hatta eğer) bu durumda, GC esas olur sonucunda bellek baskısı (yani ihtiyaç daha fazla yer). Sonlandırıcı genellikle sadece temizlik için kullanılıryönetilmeyenkaynak, yönetilen kaynaklar beri bertaraf/kendi koleksiyonu var.

Dolayısıyla IDisposable için kullanılırkararlınesneleri, yani temiz şimdi. Nesnenin bellek (hala GC aittir) toplamak değil mi - ama örneğin dosyaları, veritabanı bağlantıları, vb kapatmak için kullanılır.

Bu daha önceki konular vardır:

Son olarak, not değil nadir bir IDisposable nesne için de bir sonlandırıcı; bu durumda, Dispose() genellikle çağrıları GC.SuppressFinalize(this), yani GC gelmiyor sonlandırıcı - sadece atar bellek away (çok daha ucuz). Sonlandırıcı hala Dispose() nesneye unutursanız çalışır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChannelRichard

    ChannelRicha

    7 Kasım 2008
  • STITCHLESS TV how to sew your own style tutorials

    STITCHLESS T

    9 HAZİRAN 2011
  • xiaoyu85

    xiaoyu85

    20 ŞUBAT 2010