This explains how C# implements a handy yield not far from the Python one (Python one allows to create coroutines too): http://blogs.msdn.com/oldnewthing/archive/2008/08/12/8849519.aspx The syntax of yield is quite cleaner than the opApply (but maybe that C# implementation is less efficient). Bye, bearophile