using System; using System.Linq; using System.Collections; using System.Collections.Generic; public static class IEnumerableTransform { public static IEnumerable Transform (this IEnumerable input, EmitterFunc rule) { foreach (var v in input) { TOut output; rule (out output); yield return output; } } public static EmitterFunc Emit (TOut result) { return delegate (out TOut output) { output = result; }; } public delegate void EmitterFunc (out TOut output); public static int Main () { IEnumerable arr = new int[3]; if (!arr.Transform (IEnumerableTransform.Emit ('t')).SequenceEqual(new char[] { 't', 't', 't'})) return 1; return 0; } }