Tavsiye, 2024

Editörün Seçimi

Dispose () ve finalize () arasındaki fark C #

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, dispose () yönteminin kullanıcı tarafından açıkça çağrılması gerektiğidir, finalize () yöntemi ise nesne tahrip 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

Karşılaştırma için temelelden çı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özdizimigenel geçersiz Dispose () {
// Kodu buraya atın
}
korumalı boşluk finalize () {
// burada sonlandırma kodu
}
çağrılanDispose () 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.
uygulamaDispose () yöntemi, bir close () yöntemi olduğunda uygulanmalıdır.Finalize () yöntemi, yönetilmeyen kaynaklar için uygulanmalıdır.
Erişim belirteciDispose () yöntemi herkese açık olarak ilan edildi.Finalize () yöntemi özel olarak bildirildi.
AksiyonDispose () 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ş
performansDisto yöntemi () anlık eylemi gerçekleştirdiğinden 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ı vs.'dir . Dispose () yöntemi, IDisposeable arabiriminde bildirildi ve sınıf tarafından IDisposable arabirimini uygulayarak sınıf tarafından uygulandı. 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 olarak ilan edildiğini gözlemleyebilirsiniz. Bunun nedeni, bu yöntemin IDSposable 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 duyuruldu.

Bu yöntem, çağırmak için uygulandığı haliyle bir programın kodu tarafından elle ç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ında tanımlanır. Temizleme aktiviteleri için 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 bildirilir. Bunun arkasındaki neden, yöntemin finalize () sınıfının dışından erişilebilir olmamalı ve sadece çö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 () ve finalize () arasındaki Temel Farklar

  1. Dispose () yöntemi, IDisposable bir arabirimde tanımlanır. Diğer yandan, metod finalize () sınıf nesnesinde tanımlanmıştır.
  2. 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.
  3. İ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.
  4. Dispose () yöntemi, IDisposable arabiriminin uygulanmasından sonra bir sınıfta uygulanır. Finalize () yöntemi yalnızca yönetilmeyen kaynaklar için uygulanmalıdır, çünkü yönetilen kaynaklar çöp toplayıcı tarafından otomatik olarak serbest bırakılır.
  5. Dispose () yönteminin erişim belirteci, IDisposable arabiriminde tanımlandığı gibi halka açıktır ve bu arabirimi uygulayan sınıf tarafından uygulanacaktır, bu nedenle public olmalıdır. Öte yandan, finalize () yöntemi, erişim belirleyicisini korumalı, böylece sınıf dışındaki herhangi bir üye tarafından erişilebilir olmamalıdır.
  6. Dispose () yöntemi hızlıdır ve nesneyi anında serbest bırakır, dolayısıyla performans maliyetini etkilemez. Finalize () yöntemi 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.

Top