Hello,
I have been trying to learn c# from dotnet tutorial and they gave this code which supposed to trigger garbage collector and in turn call the Destructor of the class. however when I run the same code, I get result of Constructor only and not the Destructor.
using System;
namespace DestructorExample
{
class DestructorDemo
{
public DestructorDemo()
{
Console.WriteLine("Constructor Object Created");
}
~DestructorDemo()
{
string type = GetType().Name;
Console.WriteLine($"Object {type} is Destroyed");
}
}
class Program
{
static void Main(string[] args)
{
DestructorDemo obj1 = new DestructorDemo();
DestructorDemo obj2 = new DestructorDemo();
//Making obj1 for Garbage Collection
obj1 = null;
GC.Collect();
Console.ReadKey();
}
}
}
here is the code, if you know please tell me why it’s not working


Relevant article: https://ericlippert.com/2015/05/18/when-everything-you-know-is-wrong-part-one/
Long story short, whoever wrote that tutorial is wrong: you cannot guarantee invocation of finalizers. My guess would be it’s old and maybe used to work, but the inner workings of the GC have changed since then.