“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