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 Type | When to Use | Advantages | Disadvantages |
Default Constructor | When default values or no setup is required. | Simplifies initialization for basic objects. | May require additional setters for specific fields. |
Parameterized | When 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 Constructor | To 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 Constructor | To restrict instantiation from outside the class. | Useful for singletons or utility classes. | Cannot create multiple instances, limiting flexibility. |
Copy Constructor | To 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!