2010-06-08 18 views

risposta

30

static e public sono concetti ortogonali (vale a dire che non hanno nulla a che fare l'uno con l'altro).

public significa semplicemente che gli utenti della classe possono chiamare tale costruttore (al contrario, per esempio, private).

static significa che il metodo (in questo caso il costruttore) non appartiene a un'istanza di una classe ma alla "classe stessa". In particolare, un costruttore statico è chiamato una volta, automaticamente, quando la classe viene utilizzata per la prima volta.

Inoltre, non è possibile eseguire un costruttore statico public o private poiché non può essere chiamato manualmente; è chiamato solo dal runtime .NET stesso, quindi contrassegnarlo come public non sarebbe significativo.

3

Static Constructor ... È garantito che venga chiamato "una volta" per tutta la durata dell'app/app Domain. Può contenere istruzioni che si desidera eseguire solo una volta.

Costruttore pubblico ... Poiché non è possibile aggiungere modificatori di accesso a un costruttore statico, un costruttore pubblico significa che si sta parlando di un costruttore di istanze. Se un costruttore di istanze è pubblico, il mondo esterno può creare le sue istanze. Altre opzioni sono Interne (può essere richiamato dall'interno della libreria), Privato (solo all'interno della classe).

+1

È possibile chiamare un costruttore statico una sola volta? Cosa succede se il tipo non viene mai utilizzato all'interno del ciclo di vita di un'app? – MPritchard

+0

@MPritch, hai ragione in tal caso non verrà chiamato. Ma io non devo nemmeno preoccuparmi delle cose che una classe sta facendo (o non sta facendo) se non sto usando (o riferendola) da nessuna parte nella mia applicazione, rito? –

+0

che tutto dipende da cosa stai facendo nel costruttore – MPritchard

22

Il costruttore statico viene eseguito solo una volta, prima dell'istanza della classe. È usato se vuoi che succeda qualcosa solo una volta. Un bel esempio potrebbe essere una classe Bus (simile a qualcosa spiegano in MSDN article):

public class Bus 
{ 
    public static int busNo = 0; 

    static Bus() 
    { 
     Console.WriteLine("Woey, it's a new day! Drivers are starting to work."); 
    } 

    public Bus() 
    { 
     busNo++; 

     Console.WriteLine("Bus #{0} goes from the depot.", busNo); 
    } 
} 


class Program 
{ 
    static void Main(string[] args) 
    { 
     Bus busOne = new Bus(); 
     Bus busTwo = new Bus(); 
    } 

    // Output: 
    // Woey, it's a new day! Drivers are starting to work. 
    // Bus #1 goes from the depot. 
    // Bus #2 goes from the depot. 
} 
+0

Mi piace grazie alla prima linea chiara: semplice e senza complicazioni! –

2

Statico Constructor

Un costruttore dichiarato utilizzando il modificatore statico è un costruttore statico. Un costruttore statico viene utilizzato per inizializzare i dati statici o per eseguire una determinata azione che deve essere eseguita solo una volta nel ciclo di vita della classe. Il costruttore statico è il primo blocco di codice da eseguire in classe. Il costruttore statico esegue una sola volta nel ciclo di vita della classe. Si chiama automaticamente. Il costruttore statico non accetta alcun parametro. Non ha specificatori di accesso. Non è chiamato direttamente.

grado o pubblici costruttore

costruttore di istanza viene utilizzato per inizializzare i dati di istanza. Il costruttore di istanze viene chiamato ogni volta che viene creato l'oggetto della classe. Si chiama esplicitamente. Il costruttore di istanze prende i parametri. Ha specificatori di accesso.

Problemi correlati