Tempo addietro mi è capitato di dover inizializzare un membro statico di una classe (una ArrayList). Il mio problema consisteva nel dover inizializzare l'ArrayList prima di tutti gli altri membri della classe: in particolare, dovevo inizializzare il membro statico prima che fosse richiamato il costruttore delle istanze. C# ha risolto brillantemente il mio problema con il costruttore statico. Ecco l'esempio:
using system.collections;
public class MiaClasse
{
// Costruttore statico
public static MiaClasse()
{
listaStatica = new ArrayList();
}
// Costruttore di istanza
public MiaClasse()
{
listaNonStatica = new ArrayList();
}
// ... altro codice
private static ArrayList listaStatica = null;
private ArrayList listaNonStatica = null;
}
Il costruttore statico è utilizzato per inizializzare una classe ed è richiamato automaticamente dal runtime per inizializzare la classe prima che sia creata la prima istanza e prima che qualsiasi menbro statico sia referenziato.
Il costruttore statico è richiamato una sola volta durante tutto il ciclo di vita dell'applicazione.