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


Unless the purpose is to get a destructor to trigger only. This is the most correct answer. This pattern is very widely used and can prevent crashes. The using block is a try{}finally{} behind the scenes but without the catch it just throws and could be caught higher up the stack on accident. When I was a fresh grad this pattern saved my dumb ass when I unintentionally would catch the exceptions somewhere else, but hey it didn’t crash.