Unterschied zwischen Property.Get und Feld
-
Hallo Forianer,
ich habe eine kurze Frage bezüglich des Schreibschutzes auf ein Property bzw. Feld!
Was ist der Unterschied zwischen folgenden beiden Codeausschnitten:
public readonly int Field;
und
private int _Field; public int Field { get { return _Field; } }
Mir ist klar, dass ich bei der zweiten Methode den Lesezugriff besser steuern kann!
Aber was haltet ihr designtechnisch für die bessere Lösung?Liebe Grüße
-
private readonly int field; public int Field { get { return field; } }
-
Falls das ein Lösungsvorschlag sein sollte, würde ich doch weder das Feld noch das Property setzen können, oder?!
-
Anti-Frickeln schrieb:
Falls das ein Lösungsvorschlag sein sollte, würde ich doch weder das Feld noch das Property setzen können, oder?!
Im Konstruktor können die readonly Variabeln initialisiert werden.
Simon
-
`readonly` ist eine stärkere Garantie als eine read-only-Property. Durch diese Deklaration garantierst Du, dass die Variable auch intern unverändert bleibt, nachdem sie einmal gesetzt worden ist. Dadurch ist garantiert, dass sie z.B. nicht aus Versehen woanders gesetzt wird. Dies kann sehr wichtig sein, wenn man sich z.B. die Funktion 'GetHashCode' korrekt implementieren will. Denn deren Wert darf sich in der Regel nicht ändern.
-
Ich mag die neuen Auto Properties:
public int Field { get; private set; }
Zu readonly greifen ich nur in Ausnahmefällen.
ps: ich finde diese _field schreibweise mit dme Unterstrich sollte ausgerotted werden...