Tengo una variable de tipo de referencia que es readonly
, porque la referencia nunca cambia, solo sus propiedades. Cuando traté de agregar el modificador volatile
, el compilado me advirtió que no permitiría que los dos modificadores se aplicaran a la misma variable. Pero creo que necesito que sea volátil porque no quiero tener problemas de almacenamiento en caché al leer sus propiedades. ¿Me estoy perdiendo algo? ¿O el compilador está equivocado?¿Por qué los modificadores de lectura y volátiles son mutuamente excluyentes?
Actualización Como dijo Martin en uno de los comentarios a continuación: Los modificadores de solo lectura y volátiles se aplican solo a la referencia, y no a las propiedades del objeto, en el caso de los objetos de tipo referencia. Eso es lo que me faltaba, entonces el compilador tiene razón.
class C
{
readonly volatile string s; // error CS0678: 'C.s': a field cannot be both volatile and readonly
}
El compilador es [potencialmente incorrecto] (http://stackoverflow.com/q/39004125/1149773) (aunque posiblemente no sea para su caso particular). – Douglas