5 Powerful Types of Constructors in C#: Simplify Your Code!

Spread the love

Constructors are the most important concepts of object-oriented programming in C#. Constructors are special methods that initialize objects when a class is instantiated. Constructors in C# are useful for writing clean and more efficient code.  This blog will explore the five main 5 Types of Constructors in C# with examples.

What is a Constructor in C#?

  • A constructor is a special method in a class that automatically initializes an object when it is created. 
  • It has the same name as the class and does not have a return type. 
  • The primary purpose of a constructor is to set initial values for fields or perform other setup tasks.

Types of Constructors in C#

If you want to test all c# and .Net code online, you can use dotnet Fiddle.

1. Default Constructor

A default constructor is a parameterless constructor that initializes fields to their default values.

using System;

class Employee
{
    public string FirstName;
    public string LastName;

    // Default Constructor
    public Employee()
    {
        FirstName = "Dotnet";
        LastName = "Infinity";
    }

    public void DisplayFullName()
    {
        Console.WriteLine($"Full Name: {FirstName} {LastName}");
    }
}

class Program
{
    static void Main()
    {
        Employee emp = new Employee();
        emp.DisplayFullName();
    }
}

//Output 
//Full Name: Dotnet Infinity

Real-World Scenario:

Imagine initializing a user profile in a system with default values when no data is provided.

2. Parameterized Constructor

A parameterized constructor allows you to pass arguments during object creation.

using System;

class Employee
{
    public string FirstName;
    public string LastName;

    // Parameterized Constructor
    public Employee(string fName, string lName)
    {
        FirstName = fName;
        LastName = lName;
    }

    public void DisplayFullName()
    {
        Console.WriteLine($"Full Name: {FirstName} {LastName}");
    }
}

class Program
{
    static void Main()
    {
        Employee emp = new Employee("Dotnet","Infinity");
        emp.DisplayFullName();
    }
}

//Output 
//Full Name: Dotnet Infinity

Real-World Scenario:

Think of creating an order with specific product details at checkout.

3. Static Constructor

A static constructor initializes static members of a class and is called automatically before the first instance or any static member is accessed.

using System;

class WebsiteConfig
{
    public static string WebsiteName;

    // Static Constructor
    static WebsiteConfig()
    {
        WebsiteName = "Dotnet Infinity";
        Console.WriteLine("Static Constructor Called");
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(WebsiteConfig.WebsiteName);
    }
}

//Output
//Static Constructor Called
//Dotnet Infinity

Real-World Scenario:

Initialize configuration settings like application name or version number.

4. Private Constructor

A private constructor restricts object creation from outside the class. It’s often used in singleton patterns.

using System;

class Logger
{
    private static Logger instance;

    // Private Constructor
    private Logger()
    {
        Console.WriteLine("Logger Instance Created");
    }

    public static Logger GetInstance()
    {
        if (instance == null)
        {
            instance = new Logger();
        }
        return instance;
    }
}

class Program
{
    static void Main()
    {
        Logger logger1 = Logger.GetInstance();
        Logger logger2 = Logger.GetInstance();
    }
}

//Output
//Logger Instance Created

Real-World Scenario:

Ensure only one instance of a logging service exists in an application.

5. Copy Constructor

A copy constructor creates a new object as a copy of an existing object.

using System;

class Employee
{
    public string FirstName;
    public string LastName;

    // Parameterized Constructor
     public Employee(string fName, string lName)
    {
        FirstName = fName;
        LastName = lName;
    }

    // Copy Constructor
    public Employee(Employee emp)
    {
        FirstName = emp.FirstName;
        LastName = emp.LastName;
    }

    public void DisplayFullName()
    {
       Console.WriteLine($"Full Name: {FirstName} {LastName}");
    }
}

class Program
{
    static void Main()
    {
        Employee original = new Employee("Dotnet","Infinity");
        Employee copy = new Employee(original);

        copy.DisplayFullName();
    }
}
//Output
//Full Name: Dotnet Infinity

Real-World Scenario:

Duplicate an order or a user profile with the same data.

Tips for Using Constructors

Constructor TypeWhen to UseAdvantagesDisadvantages
Default ConstructorWhen default values or no setup is required.Simplifies initialization for basic objects.May require additional setters for specific fields.
ParameterizedWhen specific values need to be passed during creation.Provides flexibility and reduces the need for setters.Increases complexity if too many parameters are required.
Static ConstructorTo initialize static data or perform a one-time action.Ensures the setup is done only once, automatically.No control over the invocation time; called automatically.
Private ConstructorTo restrict instantiation from outside the class.Useful for singletons or utility classes.Cannot create multiple instances, limiting flexibility.
Copy ConstructorTo duplicate an object with the same data.Simplifies object duplication with minimal effort.May require careful handling of deep versus shallow copies.

Key Takeaways Of Constructors

  • Default Constructor: Initializes default values for fields.
  • Parameterized Constructor: Sets specific values during object creation.
  • Static Constructor: Initializes static members and is called automatically.
  • Private Constructor: Restricts object creation; commonly used in singleton patterns.
  • Copy Constructor: Creates a copy of an existing object.

Understanding constructors can significantly improve your programming skills. Use these examples in your applications to master each type. Happy coding!

Also Read,

  1. Mastering Pattern Matching in C#
  2. SOLID Principles in C#
  3. Inheritance in C#


Spread the love