Ich habe eine Referenz-Typ-Variable, die readonly
ist, weil die Referenz nie ändern, nur seine Eigenschaften. Als ich versuchte, den Modifikator volatile
hinzuzufügen, warnte mich der kompilierte, dass es nicht beide Modifikatoren auf die gleiche Variable anwenden lassen würde. Aber ich denke, ich brauche es, um flüchtig zu sein, weil ich keine Cache-Probleme haben will, wenn ich seine Eigenschaften lese. Fehle ich etwas? Oder ist der Compiler falsch?Warum schreibgeschützte und flüchtige Modifikatoren sich gegenseitig ausschließen?
Aktualisierung Wie Martin in einem der folgenden Kommentare erklärte: Sowohl readonly als auch volatile Modifier gelten nur für die Referenz und nicht für die Eigenschaften des Objekts im Falle von Objekten vom Referenztyp. Das habe ich vermisst, also hat der Compiler Recht.
class C
{
readonly volatile string s; // error CS0678: 'C.s': a field cannot be both volatile and readonly
}
Der Compiler ist [möglicherweise falsch] (http://stackoverflow.com/q/39004125/1149773) (obwohl möglicherweise nicht für Ihr spezielles Szenario). – Douglas