Perché questo campo statico viene sempre inizializzato in modo eccessivo?

3

Sto guardando questo eccellente articolo di Jon Skeet .

Durante l'esecuzione del codice demo, Jon Skeet dice che possiamo aspettarci tre diversi tipi di comportamenti. Per citare quell'articolo:

The runtime could decide to run the type initializer on loading the assembly to start with... Or perhaps it will run it when the static method is first run... Or even wait until the field is first accessed...

Quando provo questo (sul framework 4), ottengo sempre il primo risultato. In altre parole, il metodo statico viene inizializzato prima che l'assembly venga caricato. Ho provato a farlo più volte e ottenere lo stesso risultato. (Ho provato entrambe le versioni di debug e release)

Perché è così? Mi manca qualcosa?

    
posta TheSilverBullet 30.11.2012 - 10:07
fonte

1 risposta

5

Quando dice che "I risultati dell'esecuzione di quanto sopra sono piuttosto vari.", vuol dire che i loro potenziali risultati sono vari. L'atto di eseguire esattamente la stessa combinazione di compilatore e runtime produrrà quasi certamente gli stessi risultati ogni volta. Ma altre combinazioni ( ad es. , il compilatore C e il runtime di Mono Project) sono perfettamente in linea con i loro diritti per fare una delle altre cose.

    
risposta data 01.12.2012 - 01:14
fonte

Leggi altre domande sui tag