CSharp - Add Constructors to class


We can use a static constructor to initialize any static data.

static constructor can only run once.

We cannot call a static constructor directly.

The static constructor will be called automatically in either of these scenarios:

  • Before the creation of an instance of a type.
  • When we reference a static member in our program.


using System;
class A//  www  .  j  a  v a  2  s .c om
    static int StaticCount = 0, InstanceCount = 0;
    static A()
        Console.WriteLine("Static constructor.Count={0}", StaticCount);
    public A()
        Console.WriteLine("Instance constructor.Count={0}",
class Program
    static void Main(string[] args)
        A obA = new A();//StaticCount=1,InstanceCount=1
        A obB = new A();//StaticCount=1,InstanceCount=2
        A obC = new A();//StaticCount=1,InstanceCount=3



A type can have only one static constructor.

It must be parameterless and it does not accept any access modifier.

static field initializers run prior to a static constructor in the declaration order.

In the absence of a static constructor, field initializers execute just before the type is used.

static constructors can be useful to write log entries.

Related Example