解釋:
在迭代器塊中用於向枚舉數對象提供值或發出迭代結束訊號。它的形式為下列之一:
yield return expression;yield break;
參數
expression
進行計算並以枚舉數對象值的形式返回。expression 必須可以隱式轉換為迭代器的 yield 類型。
備忘
yield 語句只能出現在 iterator 塊中,該塊可用作方法、運算子或訪問器的體。這類方法、運算子或訪問器的體受以下約束的控制:
yield 語句不能出現在匿名方法中。有關更多資訊,請參見匿名方法(C# 編程指南)。
當和 expression 一起使用時,yield return 語句不能出現在 catch 塊中或含有一個或多個 catch 子句的 try 塊中。有關更多資訊,請參見異常處理語句(C# 參考)。
樣本
在下面的樣本中,迭代器塊(這裡是方法 Power(int number, int power))中使用了 yield 語句。當調用 Power 方法時,它返回一個包含數字冪的可枚舉對象。注意 Power 方法的傳回型別是 IEnumerable(一種迭代器介面類型)。
// yield-example.csusing System;using System.Collections;public class List{ 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); } }}輸出
2 4 8 16 32 64 128 256
在沒有yield關鍵字之前,我們實現Power方法也許要使用下面的方法:
public static IEnumerable Power(int number, int exponent) { int counter = 0; int result = 1; dim al as new arraylist(); while (counter++ < exponent) { result = result * number; al.add(result); } return al; }
從上面的比較可以看出:yield 只是部分簡化了我們的操作。