id:siokoshou wrote:
External Iterator 書いてみました。 static void Main() { int[] s1 = { 1, 2, 3, 4 }; int[] s2 = { 10, 11, 4 }; var seq = s1.Ex( s2, ( a, b ) => a + b ); foreach ( var item in seq ) { Console.WriteLine( item ); } Console.ReadKey(); } public static IEnumerable<T> Ex<T>( this IEnumerable<T> s1, IEnumerable<T> s2, Func<T, T, T> func ) { using ( var e1 = s1.GetEnumerator() ) using ( var e2 = s2.GetEnumerator() ) { while ( e1.MoveNext() && e2.MoveNext() ) yield return func( e1.Current, e2.Current ); } }
おお、ラムダ式使えばうまくいけるかな?とも思ったのですが、さすが素早いです。ありがとうございます参考になります。お仕事ではまだVS2005を使わなくてはならない局面があるので、varやらが使えないのが悲しい。foreach一発ですむのは精神的にとてもいいです。