C #’da yönetilmeyen kaynakları temizleme [duplicate]

Jan 20 2021

Bu sınıfa sahibim:

    public class A
    {
//Some logic code here
    }

Sorum şu , kapsam dışına çıktıktan sonra bu sınıfa dayalı olarak oluşturulan herhangi bir nesneyi nasıl elden çıkarabilirim veya yok edebilirim?

Örneğin:

  A a = new A();
    //some code here

Sonra nesnenin imha edilmesini veya imha edilmesini ve tahsis edilmiş hafızasını serbest bırakmasını //some code hereistiyorum a.

Yanıtlar

1 ispiro Jan 20 2021 at 03:55

Sorunun ne olduğu sorusundan açıkça anlaşılacağı için başlığı görmezden geleceğim ve sorunun ana gövdesine odaklanacağım.

Kısa cevap: Yapmıyorsun. Bu, gerekli gördüğü zaman çöp toplayıcı tarafından otomatik olarak halledilecektir. (Çöp toplayıcıyı çalıştırmanıza gerek yoktur. Bu otomatik olarak gerçekleşir.)

Çöp toplayıcı a, örneğinizde olduğu gibi kapsam dışı olan varlıkları arar ve kullandıkları alanı serbest bırakır. Daha sonra a, kapsamının dışına çıktığını (kodunuzda başka bir yerde referans gösterilmedikçe) ve bunları ele aldığını görecektir .

Bununla birlikte, uygulayan sınıfların değişkenlerini kullandığınızda, Disposebunu yapmak için Disposeaçıkça çağırmak veya usingblokları kullanmak en iyisidir . Ayrıca aelden çıkarıldığında yürütülecek bir sonlandırıcı da uygulayabilirsiniz . Ama sorduğun bu değilmiş gibi görünüyor.