พนักงานเก็บขยะจะโทรหา IDisposable ทิ้งให้ฉันไหม
NET IDisposable Pattern หมายความว่าหากคุณเขียน Finalizer และใช้ IDisposable โปรแกรมสุดท้ายของคุณจะต้องเรียก Dispose อย่างชัดเจน นี่เป็นเหตุผลและเป็นสิ่งที่ฉันทำมาโดยตลอดในสถานการณ์ที่หายากซึ่งมีการรับประกันขั้นสุดท้าย อย่างไรก็ตามจะเกิดอะไรขึ้นถ้าฉันทำสิ่งนี้: class Foo : IDisposable { public void Dispose(){ CloseSomeHandle(); } } และอย่าใช้โปรแกรมปิดท้ายหรืออะไรเลย เฟรมเวิร์กจะเรียกเมธอด Dispose ให้ฉันหรือไม่ ใช่ฉันรู้ว่านี่ฟังดูโง่และตรรกะทั้งหมดก็บอกเป็นนัยว่ามันจะไม่เกิดขึ้น แต่ฉันมักจะมี 2 สิ่งที่ด้านหลังศีรษะซึ่งทำให้ฉันไม่แน่ใจ เมื่อสองสามปีก่อนเคยบอกฉันว่ามันจะทำได้จริงและคน ๆ นั้นมีประวัติที่มั่นคงมากว่า "รู้เรื่องของพวกเขา" คอมไพเลอร์ / เฟรมเวิร์กทำสิ่ง 'เวทมนตร์' อื่น ๆ ขึ้นอยู่กับอินเทอร์เฟซที่คุณใช้ (เช่น foreach, extension method, serialization ตามคุณสมบัติ ฯลฯ ) …