Static Object Initializer von List und Dictionary

8. Mai 2013

div class=”articleAbstract”>

Die Nutzung eines Objekt-Initializer ist ein sehr übersichtlicher Mechanismus um Objekte nicht nur zu erzeugen, sondern im gleichen Zuge auch zu füllen. Mit nur einem Statement werden alle gewünschten Public-Properties eines Objektes initialisiert. Weniger bekannt ist, dass der Mechanismus sich hervorragend eignet, um auch List und Dictionary als Static Member mit Elementen zu füllen.

Ein Objekt wird per Objekt-Initializer gefüllt:

Person p = new Person { Name = "Matthias Malsy", Company = "SDX AG" };

Dabei spielt es keine Rolle, ob dies eine lokale Variable oder ein static Property einer Klasse ist.

class Whatever

{

static Person p = new Person { Name = "Matthias Malsy", Company = "SDX AG" };

...

}

Die Anwendung auf Listen nutze ich persönlich sehr gerne. Für eine lokale Variable eliminiert die Initialisierung diverse Add-aufrufe bzw. die Erzeugung eines (Zwischen-) Arrays.

class Whatever

{

static List<Person> p = new List<Person> {

new Person { Name = "Matthias Malsy", Company = "SDX AG" },

new Person { Name = "Bill Who", Company = "Microsoft" },

};

...

}

Die Anwendung auf Collections sieht man eher selten, spart aber einen Static-Constructor der sonst die Initialisierung übernommen hätte.

class Whatever

{

static Dictionary<string,Person> p = new Dictionary<string,Person> {

{"MMalsy", new Person { Name = "Matthias Malsy", Company = "SDX AG" } },

{"WBill",  new Person { Name = "Bill Who", Company = "Microsoft" } },

};

...

}