Ein häufiges Konstrukt um unter C# 2.0 Eigenschaften zu erstellen, ist dieses hier:
private string myProperty; public string MyProperty { get { return myProperty; } set { myProperty = value; } }
In C# 3.0 kann eine solche Eigenschaft mit viel weniger geschriebenem Code erzeugt werden, genauer gesagt mit einer einzigen Zeile Code.
public string MyProperty { get; set; }
Das zugehörige Feld und der Getter bzw. Setter werden automatisch durch den Compiler erzeugt.
Dass dies tatsächlich so ist kann mit Hilfe des .NET Refletor überprüft werden. Der generierte Code ist jeweils mit dem Attribut [CompilerGenerated] gekennzeichnet.
Natürlich können automatische Eigenschaften immer nur mit Getter und Setter erzeugt werden. Damit der Setter nur innerhalb der Klasse benutzt werden kann, muss dieser einfach als private deklariert werden.
public string MyProperty { get; private set; }
Der generierte Code zeigt nun jeweils einen privaten Setter und öffentlichen Getter.
Ist das bei Deinem Code mit dem private nicht genau umgekehrt? Also privater Setter, öffentlicher Getter?
Huch…du hast natürlich Recht. Danke für den Hinweis.
Gruß
Kai
Hallo Kai,
coole sache, das :-)
erspart einiges an schreibarbeit.
Danke :-)
Man bedenke, dass man aber auf die privaten Attribute keinen Zugriff hat. Diese Variante hat zudem noch den Unterschied zu öffentlich deklarierten Attributen, dass sie jederzeit erweitert werden können. Insgesamt gefallen sie mir trotzdem nicht :)