C# 3.0 - Auto Properties

March 19, 2008 at 11:38 AMAndre Loker

C# 3.0 bietet als Neuerung so genannte Auto Properties. Das sind einfache Properties, für der Compiler automatisch ein Backing Field erstellt. Beispiel:

   1: class MyClass {
   2:     // Auto property 
   3:     public int Position { get; set; }
   4: }

Der compiler erstellt ein implizites Backing Field für Position. Möchte man den Setter vor Zugriffen von außen schützen, ist das auch kein Problem:

   1: class MyClass {
   2:     // Auto property
   3:     public int Position { get; private set; }
   4: }

Der Vorteil dieser Syntax ist die kompakte Schreibweise für triviale Properties. Zudem ist es Problemlos möglich, bei Bedarf die Auto Property in eine vollständige Property zu upgraden bei Beibehaltung der Binärkompatibilität.

Ich stelle allerdings nach einiger Zeit fest, dass diese Syntax für den Leser des Quellcodes verwirrend ist. Ich finde es als Entwickler übersichtlicher, wenn alle Felder zu Beginn der Klasse angegeben sind. Wenn ich Auto Properties verwende, fehlt mir die sofortige Orientierung bzgl. der verwendeten Felder, besonders bei der Vermischung von Auto Properties und expliziten Backing Fields. Da Auto Properties nicht gesondert gekennzeichnet werden, muss ich ggf. über alle Properties schauen, um zu sehen, was wirklich in der Klasse vor sich geht. Es ist übrigens nicht möglich, readonly Felder als Auto Properties darzustellen. Bleibt noch zu resümieren, dass ich Auto Properties - außer bei trivialen Klassen - in Zukunft meiden werde.

Posted in: C#

Tags: