Warum sollten öffentliche Eigenschaften für private Felder in C # verwendet werden? [geschlossen]

8

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?

    
Nishant Kumar 27.08.2010, 05:09
quelle

5 Antworten

2

Weil Sie den angegebenen Wert in einer Eigenschaft überprüfen können.

    
jgauffin 27.08.2010, 05:13
quelle
13

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:

  • Sie erstellen eine Bibliothek mit einem öffentlichen Feld
  • Ein anderer Benutzer schreibt ein Programm, das Ihre Bibliothek verwendet und auf dieses öffentliche Feld zugreift
  • Nun möchten Sie Ihr Feld in eine öffentliche Eigenschaft ändern, da Sie den Eingabewert überprüfen müssen oder die Eigenschaft das Ergebnis einer Berechnung wurde oder Sie möchten, dass Ausnahmen ausgelöst werden, weil dies der Fall ist obsolet oder was auch immer.
  • Der Benutzer versucht, Ihre Bibliothek zu aktualisieren, nicht jedoch das Programm, das die Bibliothek verwendet.

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.

    
Timwi 27.08.2010 05:20
quelle
0

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.

    
VinayC 27.08.2010 05:14
quelle
0

Hier sind einige Gründe, warum wir öffentliche Eigenschaften anstelle von öffentlichen Feldern verwenden.

  1. Sie können komplexere Codes schreiben get / set Methoden, während es nur gibt ein einzelner Wert in Feldern.
  2. Eigenschaften machen Ihren Code mehr "OO". Sag eine Klasse namens Person, wir kann leicht erraten, dass es ein Eigenschaft namens "Name" darin. Aber a öffentliches Feld namens "Name" ist wirklich komisch.
  3. Einige Attribute funktionieren für Eigenschaften nur (AttributeTargets.Property).
Danny Chen 27.08.2010 05:32
quelle
0

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.

    
paszczi 27.08.2010 07:26
quelle

Tags und Links