C# Language Costruttore statico

Esempio

Un costruttore statico viene chiamato la prima volta che viene inizializzato un membro di un tipo, viene chiamato un membro di classe statico o un metodo statico. Il costruttore statico è thread-safe. Un costruttore statico è comunemente usato per:

  • Inizializza lo stato statico, ovvero lo stato che è condiviso tra diverse istanze della stessa classe.
  • Crea un singleton

Esempio:

class Animal
{
    // * A static constructor is executed only once,
    //   when a class is first accessed.
    // * A static constructor cannot have any access modifiers
    // * A static constructor cannot have any parameters
    static Animal()
    {
        Console.WriteLine("Animal initialized");
    }

    // Instance constructor, this is executed every time the class is created
    public Animal()
    {
        Console.WriteLine("Animal created");
    }

    public static void Yawn()
    {
        Console.WriteLine("Yawn!");
    }
}

var turtle = new Animal();
var giraffe = new Animal();

Produzione:

Animale inizializzato
Animale creato
Animale creato

Visualizza la demo

Se la prima chiamata riguarda un metodo statico, il costruttore statico viene richiamato senza il costruttore dell'istanza. Questo è OK, perché il metodo statico non può accedere allo stato di istanza in ogni caso.

Animal.Yawn();

Questo produrrà:

Animale inizializzato
Sbadiglio!

Vedi anche Eccezioni in costruttori statici e Generic Static Constructors .

Esempio Singleton:

public class SessionManager
{
    public static SessionManager Instance;

    static SessionManager()
    {
        Instance = new SessionManager();
    }
}