C# 3.0 – Automatische Eigenschaften

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.

AutomaticProperties

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.

AutomaticProperties2

4 thoughts on “C# 3.0 – Automatische Eigenschaften

  1. 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 :)

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>