สารบัญ:
คำจำกัดความ - การกำจัดหมายถึงอะไร
ในบริบทของ C # การกำจัดเป็นวิธีวัตถุที่เรียกใช้เพื่อเรียกใช้รหัสที่จำเป็นสำหรับการล้างหน่วยความจำและปล่อยและรีเซ็ตทรัพยากรที่ไม่มีการจัดการเช่นการจัดการไฟล์และการเชื่อมต่อฐานข้อมูล กำจัดปรับปรุงประสิทธิภาพและเพิ่มประสิทธิภาพหน่วยความจำโดยการปล่อยวัตถุที่ไม่สามารถจัดการได้และทรัพยากรที่หายากเช่น Graphics Device Interface (GDI) จัดการที่ใช้ในแอพพลิเคชั่นที่มีพื้นที่ จำกัด ของ Windows
กระบวนการทิ้งวิธีให้โดยอินเทอร์เฟซ IDisposable ดำเนินการโทรออก รูปแบบการกำจัดออกแบบมาสำหรับการล้างข้อมูลที่ทันเวลาและคาดการณ์ได้การป้องกันการรั่วไหลของหน่วยความจำชั่วคราวและการกำจัดทรัพยากร
Techopedia อธิบายการกำจัด
กรอบงาน. NET ช่วยในการรวบรวมขยะ (GC) จัดการหน่วยความจำวัตถุและทรัพยากรและเรียกคืนการอ้างอิงหน่วยความจำวัตถุที่ไม่ถูกต้องโดยเรียกใช้ Finalize ซึ่งเป็นวิธีการที่ไม่ได้กำหนดไว้ กระบวนการกำจัดวิธีการควบคุมอายุการใช้งานของอินสแตนซ์หน่วยความจำวัตถุและให้การควบคุมการล้างหน่วยความจำอย่างชัดเจนเมื่อเทียบกับการล้างหน่วยความจำโดยนัยของ Finalize การกำจัดอาจถูกเรียกใช้แม้ว่าจะมีอินสแตนซ์ของวัตถุหน่วยความจำอื่นอยู่ในขณะที่การสรุปอาจถูกเรียกใช้หลังจากวัตถุหน่วยความจำสุดท้ายถูกทำลาย
กฎระเบียบวิธีการกำจัดมีดังนี้:
- ใช้สำหรับทรัพยากรที่ไม่มีการจัดการที่ต้องการการปล่อยทันทีหลังจากใช้
- หากไม่ได้รับการกำจัดจะต้องดำเนินการตามขั้นตอนสุดท้าย
- หลังจากเรียกเมธอด Dispose นั้นต้องเรียกเมธอด GC.SuppressFinalize เพื่อหลีกเลี่ยงวิธี Finalize และหลีกเลี่ยง GC ที่ไม่จำเป็น
- ควรจัดการข้อยกเว้นอย่างรอบคอบหากมีการเรียกใช้วิธีการกำจัดมากกว่าหนึ่งครั้ง หากมีการจำหน่ายทรัพยากรวิธีการใด ๆ ของอินสแตนซ์อาจโยน ObjectDisposedException
- วัตถุที่มีวิธีการกำจัดทิ้งก่อนหน้านี้อาจไม่สามารถนำกลับมาใช้ใหม่ได้
- ขอแนะนำให้จัดการการกำจัดสำหรับการจัดการวัตถุพื้นเมืองเท่านั้นและวัตถุ Component Object Model (COM) ที่สัมผัสกับ. NET Framework
- การกำจัดอาจไม่ถูกเรียกใช้พร้อมกันจากหลายเธรดเนื่องจากผลลัพธ์ที่ไม่สามารถคาดการณ์ได้
- ไม่ควรสร้างประเภทค่าเป็นชนิดใช้ครั้งเดียวหรือกับสมาชิกของทรัพยากรที่ไม่มีการจัดการ
- เมื่อใช้ทรัพยากรที่ไม่มีการจัดการจะถือว่าเป็นการปฏิบัติที่ดีที่สุดในการใช้คำสั่ง Using ของซอร์สโค้ดซึ่งจะเรียกใช้เมธอด Dispose ของวัตถุโดยอัตโนมัติหลังจากกรอกรหัสวัตถุ
