Die allgemeine Anleitung für C # besteht darin, eine Eigenschaft immer über einem öffentlichen Feld zu verwenden. Dies ist sinnvoll. Wenn Sie ein Feld verfügbar machen, werden viele Implementierungsdetails verfügbar gemacht. Mit einer Eigenschaft kapseln Sie dieses Detail so, dass es keinen Code verbraucht und Implementierungsänderungen von Schnittstellenänderungen entkoppelt werden.
Ich frage mich jedoch, ob es beim Umgang mit dem readonly
Schlüsselwort manchmal eine gültige Ausnahme von dieser Regel gibt . Indem Sie dieses Schlüsselwort auf ein öffentliches Feld anwenden, geben Sie eine zusätzliche Garantie: Unveränderlichkeit. Dies ist nicht nur ein Implementierungsdetail, Unveränderlichkeit ist etwas, an dem ein Verbraucher interessiert sein könnte. Die Verwendung eines readonly
Felds macht es Teil des öffentlichen Auftrags und etwas, das nicht durch zukünftige Änderungen oder Vererbung gebrochen werden kann, ohne auch die öffentliche Schnittstelle ändern zu müssen. Das kann eine Immobilie nicht bieten.
Ist die Gewährleistung der Unveränderlichkeit readonly
in einigen Fällen ein legitimer Grund, ein Feld einer Immobilie vorzuziehen?
(Zur Verdeutlichung sage ich sicherlich nicht, dass Sie diese Wahl immer treffen sollten , nur weil das Feld im Moment unveränderlich ist, nur wenn es als Teil des Klassendesigns sinnvoll ist und beabsichtigt ist, Unveränderlichkeit in den Vertrag aufzunehmen. Ich interessiere mich hauptsächlich für Antworten, die sich darauf konzentrieren, ob dies gerechtfertigt ist, und nicht für bestimmte Fälle, in denen dies nicht der Fall ist, z. B. wenn das Mitglied auf einem Mitglied sein interface
muss oder wenn Sie faul laden möchten.)