Neues .NET 3.5 Feature: Object Initializers
Die Nummer drei die ich hier vorstellen möchte, ist ebenfalls für Leute wie mich das absolute Highlight von .NET 3.5. Und zwar sind es die sogenannten Objekt Initialisierer.
Man nehme die simple Klasse aus dem letzten Beitrag:
public class Dog
{
public string Name { get; set; }
public int Age { get; set; }
public int Height { get; set; }
}
Und man Instanziere dieses:
Dog myOldDog = new Dog();
myOldDog.Name = "Waldi";
myOldDog.Age = 12;
myOldDog.Height = 25;
Zu viel Code? Wirklich?
Na dann halt so:
Dog myDog = new Dog { Name = "Hasso", Age = 6, Height = 87 };
Auf diese Art können ab sofort mit .NET 3.5 Objekte schnell initialisiert werden.
Hier noch eine extremere Variante: Angenommen der Hund hätte ein Herrchen:
public class Dog
{
public string Name { get; set; }
public int Age { get; set; }
public int Height { get; set; }
public Person Owner { get; set; }
}
public class Person
{
public string Name { get; set; }
public string Address { get; set; }
public int Age { get; set; }
}
Dann könnte das so aussehen:
Dog myDog = new Dog
{
Name = "Hasso",
Age = 6,
Height = 87,
Owner = new Person
{
Name = "Jürgen Gutsch",
Address = "www.gutsch-online.de",
Age = 29
}
};
Der Compiler macht aus diesem Code wieder eine Herkömmliche Objekt Initialisierung:
Weitere Informationen zu den Object Initializers:
http://community.bartdesmet.net/blogs/bart/archive/2006/12/04/C_2300_-3.0-Feature-Focus-_2D00_-Part-2-_2D00_-Object-Initializers.aspx
http://weblogs.asp.net/scottgu/archive/2007/03/08/new-c-orcas-language-features-automatic-properties-object-initializers-and-collection-initializers.aspx
http://www.winterdom.com/weblog/2006/08/28/ObjectInitializersInC30.aspx
http://blog.veloursnebel.de/PermaLink,guid,6f46a88a-1783-4e80-9060-a7c7131da959.aspx