SORU
9 EKİM 2008, PERŞEMBE


İşlev adından önce tilde C ne anlama geliyor#?

Bazı kod bakıyorum ve bu deyim vardır:

~ConnectionManager()
{
    Dispose(false);
}

Sınıf IDisposable arabirimi kullanır, ama eğer bu tilde(~) için kullanılan bir parçası olup olmadığını bilmiyorum.

CEVAP
9 EKİM 2008, PERŞEMBE


~ yıkıcı

  1. Yıkıcılar otomatik olarak çağırılan ve açıkça çağrılması.
  2. Yıkıcı aşırı yüklenemez. Böylece, bir sınıf, en fazla, bir yıkıcı olabilir.
  3. Yıkıcılar kalıtsal değildir. Böylece, bir sınıf yıkıcı içinde ilan edilebilir olan bir sorun da var.
  4. Yıkıcılar yapılar ile kullanılamaz. Sadece dersleri ile kullanılır. Bir örnek, herhangi bir kod örneği kullanmak için artık mümkün olduğunda imha için uygun hale gelir.
  5. Örnek için yıkıcı yürütme örneğini imha için uygun hale geldikten sonra herhangi bir zamanda ortaya çıkabilir.
  6. Örneği yok olduğunda, kalıtım zincirine yıkıcılar, sırayla, en azından elde edilen türetilmiş denir.

Sonuçlandırmak

C#, Finalize yöntemi, standart bir C yıkıcı yapacağı işlemleri gerçekleştirir. C#, sınıf adından önce bir tilde ( ~ ) simgesi yerleştirerek C yıkıcı sözdizimi kullanın -- Sonuçlandırmak adı yok.

Atın

Tercih açıkça sınıfın kullanıcı tarafından çağrılabilir Close() Dispose() bir yöntem nesneleri imha etmek. Finalize (yıkıcı) GC tarafından denir.

Idisposablearayüz sınıfı bertaraf edilmesi için gereken kaynakları tuttuğundan dünya söyler ve kullanıcılar onları serbest bırakmak için bir yol sağlar. Eğer bunu yaparsanız, sizin sınıfta bir sonlandırıcı uygulamak gerekir, Atma yöntemigerekirGC.SuppressFinalize() yöntemi örneğinin sonuçlandırılması bastırılmış olduğundan emin olmak için kullanın.

Kullanmak ne?

Yasal bir yıkıcı açıkça çağırmak için değil. Yıkıcı çöp toplayıcı tarafından çağrılır. Eğer yakın ve mümkün olduğunca çabuk elden çıkarmak istediğiniz değerli yönetilmeyen kaynakları (dosya işleme) işlemek yaparsanız, IDisposable arabirimini uygulamak gerekir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • modica89

    modica89

    24 HAZİRAN 2007
  • RickardRick

    RickardRick

    9 Mart 2007
  • SignatureSeries

    SignatureSer

    24 Aralık 2006