volatile è un suggerimento per il compilatore (e compilatore NGEN/JIT) che il valore di questa variabile può cambiare in qualsiasi momento, e quindi ottimizzazioni attorno accesso alla variabile cache il valore localmente volatili disabilitato .
consideri il codice seguente:
If (UserName == "")
// do something
If (UserName == "Fred")
// do something
Se volatile non era presente, il compilatore potrebbe generare IL dove memorizza il riferimento sulla pila per il primo confronto e che riutilizza per il secondo. Tuttavia, aggiungendo volatile dice al compilatore che il riferimento potrebbe essere cambiato da un altro thread, forzandolo quindi a generare IL che non riutilizzerà la copia dello stack dal primo confronto.
fonte
2010-11-05 03:54:15
bene, è stata una grande spiegazione. (Y) –
@Shimmy: sei perfettamente in grado di trovare le specifiche senza il mio aiuto. –
Ma non spec 10.5.3 :) – Shimmy