yield (C# 參考)
更新:2007 年 11 月
用於 iterator 區塊中,可以提供值給列舉值物件或表示反覆運算的結束。採用以下形式其中之一:
yield return <expression>;
yield break;
備註
會針對 expression 進行評估,並當做一個值傳回給列舉值物件;expression 必須可隱含轉換為 Iterator 的 yield 型別。
yield 陳述式只出現在 iterator 區塊內,而此區塊可以當做方法、運算子或存取子 (Accessor) 等的主體。這種方法、運算子或存取子的主體受以下限制:
yield 陳述式不能出現於匿名方法 (Anonymous Method) 中。如需詳細資訊,請參閱匿名方法 (C# 程式設計手冊)。
yield return 陳述式與 expression 一起使用時,不可以在 catch 區塊或在擁有一個或多個 catch 子句的 try 區塊中出現。如需詳細資訊,請參閱例外處理陳述式 (C# 參考)。
範例
在下列範例中,yield 陳述式用於 Iterator 區塊中,此區塊是 Power(int number, int power) 方法。叫用 (Invoke) Power 方法時,它會傳回包含數字乘冪的列舉值物件。請注意,Power 方法的傳回型別為 IEnumerable,這是 Iterator 介面型別 (Interface Type)。
public class List
{
//using System.Collections;
public static IEnumerable Power(int number, int exponent)
{
int counter = 0;
int result = 1;
while (counter++ < exponent)
{
result = result * number;
yield return result;
}
}
static void Main()
{
// Display powers of 2 up to the exponent 8:
foreach (int i in Power(2, 8))
{
Console.Write("{0} ", i);
}
}
}
/*
Output:
2 4 8 16 32 64 128 256
*/
C# 語言規格
如需詳細資料,請參閱 C# 語言規格中的下列章節:
19.3 Iterator
22 Iterator