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

Yazar: Laura McKinney
Yaratılış Tarihi: 2 Nisan 2021
Güncelleme Tarihi: 13 Mayıs Ayı 2024
Anonim
NEW Mercedes C-Class 2022 - AMG Line vs Avantgarde (exterior & interior) which one is better?
Video: NEW Mercedes C-Class 2022 - AMG Line vs Avantgarde (exterior & interior) which one is better?

İç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.

  1. Karşılaştırma Tablosu
  2. Tanım
  3. Anahtar Farklılıklar
  4. Sonuç

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ı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.
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.
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ş
performansDisdite () 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.

  1. 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.
  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 Çü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 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.
  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 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.