h1

.NET 3.5 – Neuerungen bei C#3.0 – Teil 5 von 9

Februar 8, 2008

Object und Collection Initializer

Das Initialisieren von Objekten und Collections ist mit C#3.0 durch eine zusätzliche Möglichkeit bereichert worden. In erster Linie spart man meiner Meinung nach ein paar Zeilen Code und damit natürlich Zeit. Auf dem zweiten Blick erkennt man dann natürlich noch die Notwendigkeit dieser Möglichkeit im Gesamtkonzept von C#3.0. Das wird vielleicht erst ganz am Ende bei Betrachtung aller Neuigkeiten im Gesamtkonzept klar. Ein paar Beispiele erleichtern natürlich die Verständlichkeit. Also hier die neuen Object Initializer:

var c = new Customer {Id = 1, Name = "Microsoft"};

Was der bisherigen Schreibweise entspricht:

Customer c = new Customer();
c.Id = 1;
c.Name = "Microsoft";

Das ganze kann natürlich auch in verschachtelter Form angewendet werden. Im folgenden Beispiel wird eine Linie mit zwei Punkten und deren Koordinaten initialisiert:

var l = new Line{
 P1 = {X = 0, Y = 0},
 P2 = {X = 10, Y = 10}
};

Das entspricht:

Line l = new Line();
l.P1.X = 0;
l.P1.Y = 0;
l.P2.X = 10;
l.P2.Y = 10;

Viel mehr kann man dazu eigentlich nicht erzählen. Also noch was zu den Collection Initializern:

List<int> l = new List<int> {0, 1, 2, 3};

und ein bisschen komplexer:

var c = new List<Customer>{
    new Customer {Name = "Microsoft",
        PhoneNumbers = { "206-555-0101", "425-882-8080" }},
    new Customer {Name = "Basta",
        PhoneNumbers = { "206-666-0101", "425-888-8080" }}
};

was man auch wie folgt schreiben könnte:

var c = new List<Customer>();
var _c1 = new Customer();
_c1.Name = "Microsoft";
_c1.PhoneNumbers.Add("206-555-0101");
_c1.PhoneNumbers.Add("425-882-8080");
c.Add(_c1);
var _c2 = new Customer();
_c2.Name = "Basta";
_c2.PhoneNumbers.Add("206-666-0101");
_c2.PhoneNumbers.Add("425-888-8080");
c.Add(_c2);

Es ist denke ich eines der leichter verständlichen und am schnellsten anwendbaren neuen Features von .NET 3.5
Viel Spaß beim verwenden…

^ Teil 1: Übersicht aller Neuerungen (Einleitung)

< Teil 4: Lambda Expressions

> Teil 6: Anonymous Types

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: