Yield return & using IDisposable

English Version

“Yield return” ist ein mächtiges und praktisches Statement, wenn man schnell und einfach eine iterierbare Liste erzeugen möchte, ohne erst großartig ein Array oder eine List anzulegen:

using System;
using System.Collections.Generic;
using System.Drawing;

class Program
{
    static void Main()
    {
        var colors = Rainbow;

        Console.WriteLine("colors.GetType(): {0}", colors.GetType());
        Console.WriteLine();

        foreach (Color color in colors)
        {
            Console.WriteLine(color.Name);
        }

        Console.ReadLine();
    }

    static IEnumerable<Color> Rainbow
    {
        get
        {
            yield return (Color.Red);
            yield return (Color.Orange);
            yield return (Color.Yellow);
            yield return (Color.Green);
            yield return (Color.LightBlue);
            yield return (Color.Indigo);
            yield return (Color.Violet);
        }
    }
}
Red
Orange
Yellow
Green
LightBlue
Indigo
Violet

Der .NET Compiler erzeugt dann im Hintergrund die notwendigen IEnumerable- und IEnumerator-implementierenden Klassen und die State Machine und alles ist fein und übersichtlich.
Read more

Linq: Split()

English Version

Terminator T1000

Ihr kennt ja den Aschenputtel-Spruch “Die Guten ins Töpfchen, die Schlechten ins Kröpfchen.”?

Naja, .NET Linq hat eine Lösung für das Eine oder Andere, genannt Where(). Wenn man das benutzt, sieht die Lösung wahrscheinlich so aus:

var evens = list.Where(number => ((number % 2) == 0));
var odds =  list.Where(number => ((number % 2) != 0));

Aber es gibt keine Lösung für Beides. Also hab ich mir selbst eine geschrieben:

public static void Split<T>(this IEnumerable<T> source
    , Func<T, Boolean> predicate
    , out IEnumerable<T> trueList
    , out IEnumerable<T> falseList)
{
    trueList = source.Where(predicate);
    falseList = source.Except(trueList);
}

Read more

WPF: MVVM & Responsive UI

English Version

Vor ein paar Tagen hatte ich ja von meinen ersten Gehversuchen im Bereich von WPF & MVVM berichtet.

Nun hat mich ein Kumpel, der genau dieses Feld schon eine ganze Weile beackert, vor eine Herausforderung gestellt:

a) Meine GUI sollte ansprechbar (“responsive”) bleiben, während der Merge ausgeführt wird.

b) Es soll nicht immer die ganze GUI nach jeder Aktion evaluiert werden.

Read more

Marzahner Impressionen

Ja, Marzahn (nicht das Dorf, der Stadtteil) wurde Ende der 70er und Anfang der 80er in der DDR hochgezogen, um schnell und massiv neuen Wohnraum zu schaffen.

Ich möchte mich aber mal gegen den Eindruck erwehren, der heute immer noch erweckt wird: Dass Marzahn eine einzige Betonwüste sei.

Tatsächlich wurde nämlich viel Freiraum zwischen den Häusern gelassen, der heute eher weiter zugebaut, als gelassen wird.

Deshalb hier mal eine kleine Sammlung von Bildern des Stadtteils, in dem ich aufgewachsen bin:

20140819_113609

Berlin-Marzahn, 2014

Berlin-Marzahn, 2014

Berlin-Marzahn, 2014

Berlin-Marzahn, 2014

Read more

36 Jahre und 8 Monate

Am 30. August 2014 bin ich genau 36 Jahre und 8 Monate alt.

Kann ja mal passieren.

Aber letzte Woche Woche war ich in Berlin, meine Mama und meine Oma besuchen, weil meine Mama Geburtstag hatte.

Und während ich so im Auto saß, sprang einfach so dieser Gedanke in meinen Kopf. Wann war meine Mama eigentlich 36 Jahre und 8 Monate alt? Sie war es im April 1990.

Ich war zu diesem Zeitpunkt 12 Jahre und 4 Monate alt.

Nun müsst ihr dazu wissen, dass meine Mama und ich beide in der DDR geboren wurden, ich in "Berlin – Hauptstadt der DDR"

Bis zu meinem sechsten Lebensjahr habe ich in einer ofenbeheizten Altbauwohnung in der fünften Etage im Prenzlauer Berg, direkt am Friedrichshain, gewohnt. Ihr wisst schon, da wo jetzt die ganzen Schwaben wohnen und die Preise nach oben treiben.

Dafür habe ich eine Invasion der Südpfalz begonnen!

Muahahahaa!

Read more