カテゴリ:.Net Framework
voidメソッドを書いているときに不意に「処理で得られた情報を返してやろう。」と戻り値の型を変更して、yield return なんてしたら駄目ですよ。
たとえ DEBUG モードでも処理は行われませんよ。
(foreachブロックで使わないとメソッドは実行されません。)
補足1.イテレータ(yield return, yield break)を使う場合、型はIEnumerable<T>(←リストなどを返す場合)、IEnumerator<T>両方解釈してくれます。
補足2..Net Framework 1.xで使える従来の IEnumerable / IEnumerable<T> オブジェクトを返す手段では、得られるオブジェクトを使わなくても処理は行われます。
#イテレータはクラスに展開されている、実際に処理が中断・再開されている、ことは理解していたのに陥りました。
参考リンク http://journal.mycom.co.jp/articles/2005/09/29/dotnet2/index.html