วิธีล้างทรัพยากรที่ไม่มีการจัดการใน C # [ซ้ำ]
ฉันมีคลาสนี้:
public class A
{
//Some logic code here
}
คำถามของฉันคือฉันจะกำจัดหรือทำลายวัตถุใด ๆ ที่สร้างขึ้นจากคลาสนี้หลังจากออกไปนอกขอบเขตได้อย่างไร?
ตัวอย่างเช่น:
A a = new A();
//some code here
หลังจากที่//some code here
ฉันต้องการให้a
วัตถุทำลายหรือกำจัดและปลดปล่อยหน่วยความจำที่จัดสรรของเขา
คำตอบ
ฉันจะเพิกเฉยต่อชื่อเรื่องและมุ่งเน้นไปที่เนื้อหาของคำถามเนื่องจากดูเหมือนว่าจะเห็นได้ชัดจากคำถามว่าปัญหาคืออะไร
คำตอบสั้น ๆ : คุณทำไม่ได้ สิ่งนี้จะได้รับการดูแลโดยอัตโนมัติโดยคนเก็บขยะเมื่อเห็นว่าจำเป็น (คุณไม่จำเป็นต้องเรียกใช้ตัวเก็บขยะซึ่งจะเกิดขึ้นโดยอัตโนมัติ)
จากนั้นตัวเก็บขยะจะมองหาเอนทิตีที่อยู่นอกขอบเขตเช่นa
ในตัวอย่างของคุณและจะเพิ่มพื้นที่ว่างที่พวกเขาใช้ จากนั้นจะเห็นว่าภายในของa
have ยังอยู่นอกขอบเขต (เว้นแต่จะมีการอ้างอิงที่อื่นในโค้ดของคุณ) และจัดการกับมัน
ต้องบอกว่าเมื่อคุณใช้ตัวแปรของคลาสที่นำไปใช้Dispose
ควรเรียกDispose
อย่างชัดเจนหรือใช้using
บล็อกเพื่อทำสิ่งนั้นให้เสร็จ คุณยังสามารถใช้ Finalizer ซึ่งจะดำเนินการเมื่อa
ได้รับการกำจัด แต่ดูเหมือนว่านั่นไม่ใช่สิ่งที่คุณถาม