- read

Destructors in C#: When and How to Create Them ⚡️

LeadEngineer 99

Destructors in C#: When and How to Create Them ⚡️

Junior To Senior: A Software Interview Question For A Mid Position

LeadEngineer
Level Up Coding
Published in
4 min readSep 28

--

Welcome, engineers! Today, we will be exploring a question given for a mid software engineer position.

Let’s take a look at what a desctructor is (every OOP language has one as they do have a constructor) when and how to create them in the context of .NET C#.

Place your booty in a comfortable position and Let’s Get Right Into It!

Destructor Introduction 📑

Destructors in C# are an essential aspect of memory management and resource cleanup within your applications. Understanding when and how to create them is crucial for the coding interview. In this article, we’ll dive deep into the world of C# destructors, exploring their purpose, usage, and providing you with practical code examples.

What is a Destructor ❓

In C#, a destructor is a special method that allows you to release and clean up resources, such as file handles, database connections, or memory, when an object of a class is no longer needed. Destructors are the counterpart to constructors, which initialize an object when it’s created. The destructor, also known as the finalizer, runs when the garbage collector decides to reclaim the memory occupied by an object.

Why Do We Need Destructors ❔

Destructors are particularly valuable in scenarios where your objects hold unmanaged resources. Unmanaged resources are those that are not managed by the .NET runtime and don’t participate in the garbage collection process. Examples include:

  1. File Handles: When working with files, it’s crucial to close them properly to prevent resource leaks.
  2. Database Connections: Leaving database connections open can lead to inefficiency and resource exhaustion.
  3. Native Interop: When interacting with native libraries, it’s essential to release unmanaged resources.

By the way, here is a very good article on tips how to manage your memory and learn a bit more about the unmanaged part: