Betrachten Sie den folgenden Code:
%Vor%Was bewirkt das, dass die öffentlichen Mitglieder allein nicht hätten?
Wenn Sie Eigenschaften anstelle von öffentlichen Feldern verwenden, blenden Sie die Implementierung aus.
Wenn Sie an einem bestimmten Punkt die Eigenschaften von Text und Werten ändern müssen, können Sie das Verhalten ändern, ohne die API der Klasse zu ändern.
Darüber hinaus beschränkt dieses Idiom den externen Zugriff auf die exponierten Daten als schreibgeschützt.
Dieser Code würde es externen Entitäten ermöglichen, Ihre Werte zu lesen, während Ihr Code das Backing-Feld intern ändern könnte.
Sie können das mit den Auto-Eigenschaften kurzschließen:
%Vor%Mit einem öffentlichen Feld wären Sie nicht in der Lage, sich vor externen Änderungen zu schützen und gleichzeitig interne Änderungen zu unterstützen.
Selbst wenn Sie ein Feld extern beschreibbar machen möchten, würde ich dennoch vorschlagen, das Ding in eine Eigenschaft zu kapseln - Sie wissen nie, ob Sie intern etwas unterstützen müssen, ohne den externen Vertrag zu brechen (benutzerdefinierter Code im set / get gibt an) Sie Platz, um dies zu tun).
Ganz zu schweigen von den meisten Datenbindungs-Frameworks, die keine Felder sehen, nur Eigenschaften.
Die _text
und _values
können nur innerhalb der Klasse festgelegt werden, für die sie definiert sind, aber ihre Werte sind über die Eigenschaften zugänglich.
In Ihrem Beispiel werden die Eigenschaften nur als gelesen dargestellt, aber es gibt auch andere Verwendungszwecke.
%Vor% Wenn Sie einige Operationen intern in return_text
durchführen und dann gegen proeperty Text
zurückgeben möchten, könnten Sie etwas ähnliches tun.
Dies ist das Feld Kapselung
Verkapselung wird manchmal als die erste Säule oder bezeichnet Prinzip der objektorientierten Programmierung. Nach dem Prinzip der Verkapselung kann eine Klasse oder Struktur angeben, wie auf welche zugegriffen werden kann Seine Mitglieder sollen außerhalb der Klasse oder Struktur codieren. Methoden und Variablen, die nicht von außerhalb der Klasse verwendet werden sollen oder Assembly kann versteckt werden, um das Potenzial für Codierungsfehler zu begrenzen oder bösartige Exploits.
Betrachten Sie das folgende Beispiel:
%Vor% In diesem Beispiel gibt es ein privates Feld date
, das öffentlich über die Eigenschaft Date
verfügbar gemacht wird. Wenn Sie jetzt die Grenze für das Datum festlegen möchten, können Sie den festgelegten Teil der Eigenschaft sehen.
Tags und Links c# access-modifiers