Wenn ich ein Klassenmitglied privat mache und dann auf dieses Mitglied zugreifen möchte, müssen wir eine öffentliche Eigenschaft für dieses Mitglied definieren. Aber dann frage ich mich: Wenn wir das Klassenmitglied öffentlich verwenden können, indem wir eine öffentliche Eigenschaft deklarieren, warum definieren wir dann nicht einfach das Klassenmitglied selbst als öffentlich?
Microsoft empfiehlt die Verwendung öffentlicher Eigenschaften anstelle von öffentlichen Feldern aus Gründen der Binärkompatibilität . Dies ist nur ein Problem, wenn Sie eine Bibliothek schreiben (auf die andere Programme zugreifen).
Stellen Sie sich im Prinzip dieses Szenario vor:
Dies wird das Programm komplett kaputt machen - es wird nicht mehr funktionieren und nur abstürzen. Wenn Sie jedoch anstelle des Felds von Anfang an ein öffentliches Eigentumsrecht hatten, können Sie die Bibliothek austauschen.
Dies ist natürlich nur für Bibliotheken relevant. In allen anderen Fällen ist der Hinweis nicht wirklich relevant und Sie können Felder verwenden, wenn Sie möchten. Wenn Sie später feststellen, dass Sie eine Eigenschaft benötigt haben, können Sie sie immer noch in eine Eigenschaft ändern, und Ihr Programm wird weiterhin kompiliert.
Property Accessors (get, set Methoden) ermöglichen es Ihnen, Ihre Implementierung in Zukunft zu ändern. Beispielsweise können Sie mit einem Sicherungsfeld (private Klassenmitglied) beginnen, aber später kann die Eigenschaft ein Ergebnis einer Berechnung werden. Außerdem können Sie mit der Eigenschaftssyntax über schreibgeschützte Elemente verfügen, sodass Sie den Wert nur innerhalb Ihrer Klasse ändern können, während die Außenwelt nur lesen kann.
Hier sind einige Gründe, warum wir öffentliche Eigenschaften anstelle von öffentlichen Feldern verwenden.
Der Grund für die Verwendung von Eigenschaften ist sehr einfach. Sie können immer die Code-Handhabung verändern, indem Sie je nach Ihrer Arbeit ein externes Programm abbrechen oder setzen, ohne dass ein externes Programm bricht - dies ist mit Feldern nicht möglich. Darüber hinaus können Eigenschaften als virtuell gekennzeichnet werden und somit von untergeordneten Klassen neu definiert werden - wiederum ohne die Kompatibilität zu beeinträchtigen.
Tags und Links c# properties