[C#] هل دعوة جامع القمامة تخلص ()؟


Answers

الجواب القصير هو "لا". يمكن العثور على إجابات أكثر تفصيلا على ردودي على "هل من الممارسة السيئة أن تعتمد على .NET جمع القمامة" و "ماذا يحدث إذا لم أكن استدعاء ديسبوس ()"

Question

اعتقدت أن غ سوف استدعاء ديسبوس في نهاية المطاف إذا كان البرنامج الخاص بك لا ولكن يجب عليك استدعاء ديسبوس () في البرنامج الخاص بك فقط لجعل تنظيف قاطع.

ومع ذلك، من بلدي برنامج الاختبار قليلا، وأنا لا أرى التخلص من الحصول على دعا على الإطلاق ....

public class Test : IDisposable
{
    static void Main(string[] args)
    {
        Test s = new Test();
        s = null;
        GC.Collect();
        Console.ReadLine();
    }

    public Test()
    {
        Console.WriteLine("Constructor");
    }

    public void Dispose()
    {
        Console.WriteLine("Dispose");
    }
}

// الإخراج هو مجرد "المنشئ"، وأنا لا تحصل على "التخلص" كما أتوقع. ماذا تفعل؟

إديت: نعم، وأنا أعلم أنني يجب أن ندعو ديسبوس () - أنا اتبع النمط القياسي عند استخدام الكائنات القابل للتصرف. سؤالي ينشأ لأنني أحاول تعقب تسرب في رمز إلسس شخص ما، والتي تدار C ++ (طبقة أخرى من التعقيد الذي سيكون موضوعا جيدا من موضوع آخر).