Lambdas machen das Leben schön. Oder: wie caste ich ein Array?

Written on April 04, 2010

Es gibt Momente, da wird einem die Evolution des .NET Frameworks ziemlich deutlich vor Augen geführt.

So zum Beispiel beim Casten von Arrays -- z.B. von object[] nach string[].

Die .NET Framework 1.x Variante könnte etwa so ausgesehen haben:

object[] objects = new object[];
//...
// Elemente zu “input” hinzufügen
//...
string[] strings = new string[objects.Length];
for (int index = 0; index < input.Length; index++)
{
    strings[index] = (string)objects[index];
}

Mit dem .NET Framework 2.0 wurden Generics eingeführt, was die Sache schon erleichterte (die Deklaration von "objects" spare ich mir im weiteren):

string[] strings = Array.ConvertAll<object, string>(objects,
delegate(object obj)
{
    return (string)obj;
});

Durch die Einführung von Lambda Expressions mit .NET 3.5 wurde die Lesbarkeit des Codes nochmal verbessert und die Tipparbeit reduziert:

string[] strings = Array.ConvertAll(objects, obj => (string)obj);

Der Lernaufwand lohnt sich also doch irgendwann ;-)