volátil es una sugerencia para el compilador (y compilador NGEN/JIT) que el valor de esta variable puede cambiar en cualquier momento, y por lo tanto optimizaciones alrededor de acceder a la variable al almacenar en caché el valor localmente volátil estar deshabilitado .
Consideremos el siguiente código:
If (UserName == "")
// do something
If (UserName == "Fred")
// do something
Si volátil no estaba presente, el compilador puede generar IL donde almacena la referencia en la pila para la primera comparación y que reutiliza para la segunda. Sin embargo, agregar volátil le dice al compilador que la referencia puede ser modificada por otro hilo, forzándolo a generar IL que no reutilizará la copia de la pila de la primera comparación.
bueno, esa fue una gran explicación. (Y) –
@Shimmy: Usted es perfectamente capaz de encontrar la especificación sin mi ayuda. –
Pero no especificación 10.5.3 :) – Shimmy