最終更新:2011-08-22 (月) 20:05:37 (3279d)  

yield
Top / yield

列挙子オブジェクトに値を挿入する場合、または反復処理?の終了を通知する場合に、iterator ブロック内で使用されます。形式は次のいずれかになります。

yield return <expression>;
yield break;

http://msdn.microsoft.com/ja-jp/library/9k7k7cf0(VS.80).aspx

メモ

yield キーワードを使う場所は限られていて、IEnumerator または IEnumerable インタフェースを戻り値するイテレータブロックと呼ばれる中でしか使えません。 ただし、匿名メソッドや finally ブロックなどで利用することはできません。

yield キーワードは単体で利用するものではなく、yield return、または yield break とすることで意味を成します。 これらは return や break を修飾しているというよりも、yield return 文、及び yield break 文として、イディオム的に捕らえるというのが正しいと思われます。

using System;

class Test {
	public static System.Collections.IEnumerable GetIterator() {
		yield return 1;
		yield return 10;
		yield return 100;
		yield return "ネコミミモード";
	}
	static void Main() {
		foreach(object n in GetIterator()) {
			Console.WriteLine(n);
		}
	}
}
>test
1
10
100
ネコミミモード

関連

参考