using System.Collections.Generic;
static IEnumerable<string> Iterator()
Console.WriteLine("Before first yield");
Console.WriteLine("Between yields");
Console.WriteLine("After second yield");
Console.WriteLine("In finally block");
public static void Main()
IEnumerable<string> enumerable = Iterator();
using (IEnumerator<string> enumerator = enumerable.GetEnumerator())
while (enumerator.MoveNext())
string value = enumerator.Current;
Console.WriteLine("Received value: {0}", value);