Gibt es in C# eine Möglichkeit, eine Eigenschaft als deterministisch zu kennzeichnen?Determinismus der Eigenschaft
Der Grund, warum ich frage, ist, dass ich oft eine lokale Variable deklariere und eine Eigenschaft darin einlese, anstatt auf die Eigenschaft mehrere Male zuzugreifen.
Gibt es eine Möglichkeit, die Eigenschaft als deterministisch zu dekorieren, so dass der Compiler dann mehrere Zugriffe auf diese Eigenschaft optimieren könnte? Ich vermute in einem solchen Szenario, dass die Klasse unveränderlich sein und als solche dekoriert sein müsste.
Ist das etwas, das überhaupt existiert, oder halte ich mich an Strohhalmen fest?
+1 - Nur eine Frage - wenn der Compiler diese Optimierung trotzdem macht, wie würde er Änderungen am Objekt auf nicht unveränderlichen Objekten berücksichtigen - ob das vom selben Thread war oder nicht? Ist es möglich, dass Sie gerade bestätigt haben, dass Eigentum auf einem einfachen Grundstück eine sehr geringe Summe kostet, in welchem Fall ich aufhören sollte, anal darüber zu sein? :) –
@Matt Whitfield: Wenn der Code optimiert ist, wird die einfache Eigenschaft interniert werden. Das Lesen der Eigenschaft ruft einen Eigenschaftsgetter nicht auf, um den Wert zurückzugeben, sondern erhält den Wert direkt, als ob Sie auf eine öffentliche Variable in der Klasse zugreifen würden. Im C# -Code erhalten Sie die gewünschte Abstraktion und Isolation in OOP-Code, aber im kompilierten Code erhalten Sie die Geschwindigkeit von öffentlichen Variablen. :) – Guffa
danke - Ich werde das akzeptieren, weil der Kommentar, den du da hast, das Bit ist, das mir das Verständnis gibt, nach dem ich gesucht habe, als ich die Frage gestellt habe. –