yield (C# 參考)

更新:2007 年 11 月

用於 iterator 區塊中,可以提供值給列舉值物件或表示反覆運算的結束。採用以下形式其中之一:

yield return <expression>;
yield break;

備註

會針對 expression 進行評估,並當做一個值傳回給列舉值物件;expression 必須可隱含轉換為 Iterator 的 yield 型別。

yield 陳述式只出現在 iterator 區塊內,而此區塊可以當做方法、運算子或存取子 (Accessor) 等的主體。這種方法、運算子或存取子的主體受以下限制:

  • 不容許 Unsafe 區塊。

  • 方法、運算子或存取子的參數不能是 refout

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

請參閱

概念

C# 程式設計手冊

參考

foreach, in (C# 參考)

使用 Iterator (C# 程式設計手冊)

其他資源

C# 參考