C #’da yönetilmeyen kaynakları temizleme [duplicate]
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 here
istiyorum a
.
Yanıtlar
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, Dispose
bunu yapmak için Dispose
açıkça çağırmak veya using
blokları kullanmak en iyisidir . Ayrıca a
elden çıkarıldığında yürütülecek bir sonlandırıcı da uygulayabilirsiniz . Ama sorduğun bu değilmiş gibi görünüyor.