“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