Search code examples
c#.netstaticglobalstatic-constructor

Differences between static constructor and defind static instance in global class


What is differences between static constructor as the following:

class GlobalClass
{

    public static DataBase dataBase;

    static GlobalClass()
    {
        dataBase= new DataBase(@"Data Source=..;...; User ID=... ;Password=...;");
        dataBase.CreateConnection();
    }
}

And defined static instance in global class as the following:

class GlobalClass
{

    public static GlobalClass Globals = new GlobalClass();

    public DataBase dataBase;

    public  GlobalClass()
    {
        dataBase= new DataBase(@"Data Source=..;...; User ID=... ;Password=...;");
        dataBase.CreateConnection();
    }
}

What is differences between each type? And which is better to use?


Solution

  • In first case database initialized only once, when GlobalClass accessed first time.

    In second case database initialized each time when you create GlobalClass instance. No instances - no initializations. Two instances - two initializations (only last one will be available via dataBase field).