kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

re:C#でExternal Iterator

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一発ですむのは精神的にとてもいいです。