What is a constructor in C#?
A special method of the class that is automatically invoked when an instance of the class is created is called a constructor. The main use of constructors is to initialize the private fields of the class while creating an instance for the class. When you have not created a constructor in the class, the compiler will automatically create a default constructor of the class. The default constructor initializes all numeric fields in the class to zero and all string and object fields to null.
Some of the key points regarding constructor are
- A class can have any number of constructors.
- A constructor doesn't have any return type, not even void.
- A static constructor can not be a parametrized constructor.
- Within a class, you can create one static constructor only.
In C#, constructors can be divided into 5 types
- Default Constructor
- Parameterized Constructor
- Copy Constructor
- Static Constructor
- Private Constructor
Now, let's see each constructor type with the example below.
Default Constructor in C#
A constructor without any parameters is called a default constructor; in other words, this type of constructor does not take parameters. The drawback of a default constructor is that every instance of the class will be initialized to the same values and it is not possible to initialize each instance of the class with different values. The default constructor initializes:
- All numeric fields in the class to zero.
- All string and object fields to null.
Example
using System;
namespace DefaultConstractor
{
class addition
{
int a, b;
public addition() //default contructor
{
a = 100;
b = 175;
}
public static void Main()
{
addition obj = new addition(); //an object is created , constructor is called
Console.WriteLine(obj.a);
Console.WriteLine(obj.b);
Console.Read();
}
}
}
Now run the application, the output will be as following:

Parameterized Constructor in C#
A constructor with at least one parameter is called a parameterized constructor. The advantage of a parameterized constructor is that you can initialize each instance of the class with a different value.
using System;
namespace Constructor
{
class paraconstrctor
{
public int a, b;
public paraconstrctor(int x, int y) // decalaring Paremetrized Constructor with ing x,y parameter
{
a = x;
b = y;
}
}
class MainClass
{
static void Main()
{
paraconstrctor v = new paraconstrctor(100, 175); // Creating object of Parameterized Constructor and ing values
Console.WriteLine("-----------parameterized constructor example by vithal wadje---------------");
Console.WriteLine("\t");
Console.WriteLine("value of a=" + v.a );
Console.WriteLine("value of b=" + v.b);
Console.Read();
}
}
}
Now run the application, the output will be as following:
Copy Constructor in C#
The constructor which creates an object by copying variables from another object is called a copy constructor. The purpose of a copy constructor is to initialize a new instance to the values of an existing instance.
Syntax
public employee(employee emp)
{
name=emp.name;
age=emp.age;
}
The copy constructor is invoked by instantiating an object of type employee and bypassing it the object to be copied. Example
employee emp1=new employee (emp2);
Now, emp1 is a copy of emp2.
Let's see its practical implementation.




Raviteja LPosted Apr 29, 2023, 2:35 PM
Constructor Intialzies both public and private fields in a class.
Vikas SrivastavaPosted Jul 5, 2021, 5:29 AM
Great explain.
Saktiprasad SwainPosted Mar 9, 2020, 3:12 AM
Very Nice article.
Raju PaladiyaPosted Mar 9, 2020, 1:25 AM
Nice one !!
Manisha JadhavPosted Mar 5, 2019, 10:58 PM
NIce Article
Metta ChittibabuPosted Feb 15, 2019, 8:53 AM
Nice article
suman paduchuriPosted Feb 11, 2019, 2:05 PM
Nice Article
Yogendra GuptaPosted Aug 31, 2018, 4:57 AM
Nice explanation about constructors concept. :)
Nisar P VPosted May 14, 2018, 1:42 AM
What is the use of 'class with private constructor' when we have abstract class for preventing instantiation?
Ashish MishraPosted May 2, 2018, 8:07 AM
Nice concept explanation one of best ever i have read it
Azeem attariPosted Mar 23, 2018, 3:47 PM
Very very very Informative article
Sagar Pandurang KapPosted Dec 13, 2017, 1:21 AM
Awesome Article.. Thank you .. Informative
Viksit SachdevaPosted Aug 11, 2017, 12:42 PM
Very nice article.. thankyou
RakeshPosted Apr 11, 2017, 2:53 PM
Great explanation. Thank you
Saurabh RaiPosted Jan 12, 2017, 12:34 AM
Nice article about the different type of constructors. Cleared many of my doubts.
SubashPosted Oct 20, 2016, 3:45 AM
Nice explanation thank you so much
Vithal WadjePosted Mar 13, 2016, 4:07 PM
Thanks monil thakor
Vithal WadjePosted Mar 13, 2016, 4:06 PM
Thanks Rajeesh Menoth
Vithal WadjePosted Mar 13, 2016, 4:06 PM
Thanks uzair hasan
Praveen ZagadePosted Mar 11, 2016, 3:07 PM
Would like to differ about the opinion on the private constructor. The article says that "When a constructor is created with a private specifier, it is not possible for other classes to derive from this class, neither is it possible to create an instance of this class." This may not be true. We can introduce another public parameterized constructor. This would open up the given Class for both object creation as well as inheritance. See the code snippet below: public class BaseClass { public static readonly string CONSTANT_STRING_1 = "CONSTANT_STRING_1"; public static readonly string CONSTANT_STRING_2 = "CONSTANT_STRING_2"; public int MyInt { get; set;} private BaseClass() {} public BaseClass(int a) { MyInt = a;} } public class DerivedClass { public int MyString{ get; set; } //DEFAULT CONSTRUCTOR NOT ALLOWED AS IT IS MARKED AS PRIVATE IN THE BASE CLASS //public DerivedClass() {} public DerivedClass(int a, string b): base(a) { MyString = b; } }
monil thakorPosted Mar 11, 2016, 2:25 AM
Nic
Rajeesh MenothPosted Aug 6, 2015, 7:44 AM
Good One Sir :)
Santhosh KumarPosted Sep 29, 2014, 2:15 PM
whether the compiler assign the default values to variables or "The default constructor initializes all numeric fields in the class to zero and all string and object fields to null " ??
uzair hasanPosted Mar 22, 2014, 2:27 AM
good
Vithal WadjePosted Feb 3, 2014, 1:33 PM
thanks Adarsh sir
Adarsh BalachandranPosted Feb 3, 2014, 5:26 AM
Nice article Vithal sir, well defined!
Vishvajeet PawarPosted Jan 1, 2014, 3:44 AM
Chan Article..Vithal..!!
Vithal WadjePosted Oct 7, 2013, 2:05 PM
thanks Shashank Srivastava sir i will see that
Shashank SrivastavaPosted Jun 28, 2013, 3:53 AM
a query.. In case of "Copy Constructor", when instance constructor is defined, we have used "this" keyword with every variable, why is it not so in case when copy constructor is defined??