Objekt-Initialisierer
Es ist immer sehr viel Programmierarbeit nötig, wenn ein Objekt nach der Instanzierung mit Startwerten ausgestattet werden soll. Besonders dann, wenn die Klasse sehr viele Felder oder Eigenschaften hat. Um das folgende Beispiel überschaubar zu halten, soll aber eine Klasse mit nur wenigen Eigenschaften reichen.
public class Person
{
public string name { get; set; }
public string vorname { get; set; }
public int alter { get; set; }
public bool istWeiblich { get; set; }
}
{
public string name { get; set; }
public string vorname { get; set; }
public int alter { get; set; }
public bool istWeiblich { get; set; }
}
Deklaration und
Wertezuweisung eines Objektes dieser Klasse war in
der Vergangenheit ein langwieriger Prozess und
bestand aus einen Aneinanderreihung von recht
einfachen Anweisungen, die aber trotzalledem alle
eingegeben werden mussten. War man nicht
sorgfältig, konnte es sogar passieren, dass ein
Wert vergessen und nicht zugewiesen wurde.
Person meinePerson =
new Person();
meinePerson.name = "Meier";
meinePerson.vorname = "Max";
meinePerson.alter = 57;
meinePerson.istWeiblich = false;
meinePerson.name = "Meier";
meinePerson.vorname = "Max";
meinePerson.alter = 57;
meinePerson.istWeiblich = false;
Durch
Objekt-Initialisierer in C# 3.0 kann das aber auch
so aussehen.
Person meinePerson =
new Person()
{
name = "Meier",
vorname = "Max",
alter = 57,
istWeiblich = false
};
{
name = "Meier",
vorname = "Max",
alter = 57,
istWeiblich = false
};
Zwar ist diese
Schreibweise an dieser Stelle nur eine unerhebliche
Verringerung des Programmieraufwandes, aber
IntelliSense von Visual Studio ist eine große
Hilfe. Wird einem Feld auf diese Art ein Wert
zugewiesen, wird IntelliSense das erkennen und
diese Feld nicht erneut vorschlagen. So kann man
sicher gehen, dass allen Feldern Werte zugewiesen
wurden, ohne dass man Gefahr läuft, ein Feld
doppelt zuzuweisen oder ein Feld zu vergessen.
Außerdem reduziert sich Instanzierung und
Wertezuweisung auf eine einzige Anweisung im
Programmcode.