Dispose () ve finalize () arasındaki fark C #
İçerik
Dispose () ve finalize (), bir nesnenin sahip olduğu yönetilmeyen kaynakları serbest bırakmak için çağrılan C # yöntemleridir. Dispose () yöntemi, IDisposable arabiriminin içinde tanımlanırken, finalize () yöntemi sınıf nesnesinin içinde tanımlanır. Dispose () ve finalize () arasındaki temel fark, yöntemdir. elden çıkarmak() açıkça kullanıcı tarafından çağrılırsa, yöntem Sonuçlandırmak() Obje yok edilmeden hemen önce çöp toplayıcı tarafından çağrılır. Aşağıda gösterilen karşılaştırma tablosunun yardımı ile aralarındaki bazı farklılıkları inceleyelim.
- Karşılaştırma Tablosu
- Tanım
- Anahtar Farklılıklar
- Sonuç
Karşılaştırma Tablosu
Karşılaştırma için temel | elden çıkarmak( ) | Sonuçlandırmak( ) |
---|---|---|
Tanımlı | Dispose () yöntemi, IDisposable arayüzünde tanımlanır. | Bu yöntem java.lang.object sınıfında tanımlanan finalize () id. |
Sözdizimi | genel geçersiz Dispose () { // Kodu buraya atın } | korumalı boşluk finalize () { // burada sonlandırma kodu } |
çağrılan | Dispose () yöntemi kullanıcı tarafından çağrılır. | Finalize () yöntemi, çöp toplayıcı tarafından çağrılır. |
amaç | Method dispose (), kullanıldığında yönetilmeyen kaynakları serbest bırakmak için kullanılır. | Yöntem finalize (), nesne yok edilmeden önce yönetilmeyen kaynakları serbest bırakmak için kullanılır. |
uygulama | Dispose () yöntemi, bir close () yöntemi olduğunda uygulanmalıdır. | Finalize () yöntemi, yönetilmeyen kaynaklar için uygulanmalıdır. |
Erişim belirteci | Dispose () yöntemi herkese açık olarak ilan edildi. | Finalize () yöntemi özel olarak bildirildi. |
Aksiyon | Dispose () yöntemi daha hızlıdır ve anında bir nesneyi imha eder. | Sonlandırma yöntemi atma işlemine kıyasla daha yavaş |
performans | Disdite () yöntemi anlık işlemi gerçekleştirir, dolayısıyla web sitelerinin performansını etkilemez. | Finalize () yönteminin yavaş olması, web sitelerinin performansını etkiler. |
Dispose () tanımı
Dispose () yöntemi, sınıfın bir nesnesi tarafından tutulan yönetilmeyen kaynakları serbest bırakır. Yönetilmeyen kaynaklar dosyalar, veri bağlantıları vb .dir. Dispose () yöntemi arabirimde bildirilir. IDisposeable ve sınıf tarafından IDIposposable arayüzünü uygulayarak uygulanır. Bu yöntem otomatik olarak çağrılmaz. Programcının, başkaları tarafından kullanılacak özel bir sınıf oluştururken manuel olarak uygulaması gerekir. Yöntem aşağıdaki sözdizimine sahiptir:
public void dispose () {// Burada kodu elden çıkar}
Yukarıdaki sözdiziminde, yöntemin genel ilan edildiğini gözlemleyebilirsiniz. Bunun nedeni, bu yöntemin IDisposable arayüzünde tanımlanmış olmasıdır ve bu arayüzü uygulayan sınıf tarafından uygulanmalıdır. Dolayısıyla, uygulayıcı sınıfa erişilebilirlik sağlamak için, yöntem kamuya ilan edildi.
Bu yöntem, çağırmak için uygulandığı şekliyle bir programın kodu tarafından el ile çağrılır. Yöntem performansı hızlıdır ve bir sınıf nesnesinin tuttuğu kaynakları anında serbest bırakır.
Finalize () tanımı
Finalize () yöntemi nesne sınıf. Temizlik faaliyetlerinde kullanılır. Bir nesnenin referansı uzun süre kullanılmadığında, bu yöntem çöp toplayıcı tarafından çağrılır. Çöp toplayıcı, yönetilen kaynakları otomatik olarak serbest bırakır, ancak dosya tanıtıcısı, veri bağlantısı vb. Gibi yönetilmeyen kaynakları serbest bırakmak istiyorsanız, sonlandırma yönteminin manuel olarak uygulanması gerekir. Çöp toplayıcı, nesneyi tamamen tahrip etmeden hemen önce finalize () yöntemini çağırır.
Yöntemin sözdizimi finalize ():
korumalı boşluk finalize () {// burada sonlandırma kodu}
Yukarıdaki sözdiziminde, finalde () yöntemi korumalı olarak ilan edilir. Bunun arkasındaki neden, yöntemin finalize () sınıfının dışından erişilebilir olmamalı ve yalnızca çöp toplayıcı tarafından erişilebilir olmalıdır.
Finalize () yöntemi, belleği anında boşaltmadığı için performansın maliyetini etkiler. C # 'da kesinleştirme yöntemi otomatik olarak yıkıcılar ile birlikte çağrılır.
- Dispose () yöntemi bir arayüzde tanımlanmıştır. ıdisposable. Diğer yandan, yöntem finalize () sınıfta tanımlanmıştır. nesne.
- Dispose () yöntemi bir programlayıcı tarafından kodun içine elle çağrılırken, sonlandırma işlemi nesneyi yok etmeden önce çöp toplayıcı tarafından otomatik olarak çağrılır.
- İmha etme yöntemi herhangi bir zamanda çağrılabilir, oysa sonlandırma yöntemi, bu nesneye uzun süre referans alınmadığını tespit ettiğinde çöp toplayıcı tarafından çağrılır.
- Dispose () yöntemi, IDisposable arabiriminin uygulanmasından sonra bir sınıfta uygulanır. Finalize () yöntemi yalnızca yönetilmeyen kaynaklar Çünkü yönetilen kaynaklar çöp toplayıcı tarafından otomatik olarak serbest bırakılır.
- Dispose () yönteminin erişim belirteci, IDisposable arabiriminde tanımlandığı gibi herkese açıktır ve bu arabirimi uygulayan sınıf tarafından uygulanacaktır, dolayısıyla public olmalıdır. Öte yandan, finalize () yöntemi erişim belirticisini korumalıdır, böylece sınıf dışındaki herhangi bir üye tarafından erişilebilir olmamalıdır.
- Dispose () yöntemi hızlıdır ve nesneyi anında serbest bırakır, dolayısıyla performans maliyetini etkilemez. Finalize () yöntemi daha yavaştır ve nesnenin tuttuğu kaynakları anında serbest bırakmaz.
Sonuç:
Sonlandırmadan daha hızlı olduğundan, metot dispose () yönteminin finalize () yönteminin kullanılması önerilir. Ayrıca, gerektiğinde herhangi bir zamanda çağrılabilir.