Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Constructors and Destructors in C#

Introduction

In object-oriented programming, constructors and destructors are special methods used to initialize and clean up objects, respectively. In C#, constructors are used to initialize objects, while destructors are used to perform any necessary final clean-up when an object is being destroyed.

Constructors

A constructor is a special method that is called when an instance of a class is created. Constructors have the same name as the class and do not have a return type. They are used to initialize the object's properties and perform any setup steps.

Types of Constructors

There are different types of constructors in C#:

  • Default Constructor: A constructor with no parameters.
  • Parameterized Constructor: A constructor with parameters that allow you to pass values during object creation.
  • Static Constructor: A constructor used to initialize static members of the class.
  • Copy Constructor: A constructor that creates a new object as a copy of an existing object.

Example: Default Constructor

class Car {
    public string brand;
    public string model;

    // Default constructor
    public Car() {
        brand = "Toyota";
        model = "Corolla";
    }
}
                

Example: Parameterized Constructor

class Car {
    public string brand;
    public string model;

    // Parameterized constructor
    public Car(string brand, string model) {
        this.brand = brand;
        this.model = model;
    }
}

// Usage
Car myCar = new Car("Honda", "Civic");
                

Destructors

A destructor is a special method that is called when an instance of a class is destroyed. Destructors are used to perform any necessary final clean-up tasks, such as releasing unmanaged resources. In C#, destructors have the same name as the class preceded by a tilde (~) and do not take any parameters or have a return type.

Example: Destructor

class Car {
    public string brand;
    public string model;

    // Constructor
    public Car(string brand, string model) {
        this.brand = brand;
        this.model = model;
    }

    // Destructor
    ~Car() {
        // Clean-up code here
    }
}

// Usage
Car myCar = new Car("Honda", "Civic");
                

Destructors are called automatically by the garbage collector, so you do not need to invoke them manually. However, it is important to understand that destructors are non-deterministic, meaning you cannot predict exactly when they will be called.

Key Points

  • Constructors are used to initialize objects.
  • Destructors are used to clean up before an object is destroyed.
  • Constructors have the same name as the class and no return type.
  • Destructors are preceded by a tilde (~) and have no parameters or return type.
  • Destructors are called automatically by the garbage collector.

Conclusion

Constructors and destructors are essential parts of object-oriented programming in C#. They help manage the lifecycle of objects, from initialization to clean-up. Understanding how to use them effectively will help you write more robust and maintainable code.