Lo si utilizza per inizializzare i campi statici sull'istanza di tipo non statico?
Praticamente, tranne che i campi statici (o membri statici di qualsiasi tipo) non sono associati alle istanze; sono associati al tipo stesso, indipendentemente dal fatto che si tratti di una classe statica o di una classe non statica.
I documentation liste alcune proprietà di costruttori statici, uno dei quali è:
- Un costruttore statico viene chiamato automaticamente per inizializzare la classe prima della prima istanza viene creato o eventuali membri statici vengono riferimento.
Qui, "prima" significa "immediatamente prima di", e qualsiasi una di quelle cose accade prima. Questo perché un costruttore statico viene chiamato una sola volta per tipo in una singola esecuzione del programma.
Ci sono delle cose da prendere in considerazione quando si utilizza un costruttore statico?
Ecco la lista completa, come dato dal link qui sopra, che dovrebbe dare un'idea di cosa aspettarsi quando si utilizza un costruttore statico:
Un costruttore statico non prende modificatori di accesso o avere parametri.
Un costruttore statico viene chiamato automaticamente per inizializzare la classe prima che venga creata la prima istanza o che venga fatto riferimento a qualsiasi membro statico.
Un costruttore statico non può essere chiamato direttamente.
L'utente non ha alcun controllo su quando il costruttore statico viene eseguito nel programma.
Un tipico utilizzo dei costruttori statici è quando la classe utilizza un file di registro e il costruttore viene utilizzato per scrivere le voci in questo file.
I costruttori statici sono anche utili quando si creano classi wrapper per codice non gestito, quando il costruttore può chiamare il metodo LoadLibrary
.
Se un costruttore statico genera un'eccezione, il runtime non la invocherà una seconda volta e il tipo rimarrà non inizializzato per la durata del dominio dell'applicazione in cui è in esecuzione il programma.
Oltre a fare in modo che non si tenta di accedere ai membri non statici, dal momento che non sei in un costruttore di istanza, l'altra cosa principale che dovete considerare è che un costruttore statico viene sempre chiamato in un momento specifico durante l'esecuzione del programma. Come già detto, non puoi controllare questo, se non controllando quando "viene creata la prima istanza o viene fatto riferimento a qualsiasi membro statico."
Rispondete voi stessi "per inizializzare i campi statici". Maggiori informazioni sul costruttore statico [qui] (http://msdn.microsoft.com/en-us/library/k9x6w0hc.aspx). –