yield在迭代器塊中用于向枚舉數(shù)對(duì)象提供值或發(fā)出迭代結(jié)束信號(hào)。它的形式為下列之一:
yield return <expression>;
yield break;
計(jì)算表達(dá)式并以枚舉數(shù)對(duì)象值的形式返回;expression 必須可以隱式轉(zhuǎn)換為迭代器的 yield 類型。
yield 語句只能出現(xiàn)在 iterator 塊中,該塊可用作方法、運(yùn)算符或訪問器的體。這類方法、運(yùn)算符或訪問器的體受以下約束的控制:
l 不允許不安全塊。
l 方法、運(yùn)算符或訪問器的參數(shù)不能是 ref 或 out。
yield 語句不能出現(xiàn)在匿名方法中。
當(dāng)和 expression 一起使用時(shí),yield return 語句不能出現(xiàn)在 catch 塊中或含有一個(gè)或多個(gè) catch 子句的 try 塊中。
示例
在下面的示例中,迭代器塊(這里是方法 Power(int number, int power))中使用了 yield 語句。當(dāng)調(diào)用 Power 方法時(shí),它返回一個(gè)包含數(shù)字冪的可枚舉對(duì)象。注意 Power 方法的返回類型是 IEnumerable(一種迭代器接口類型)。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//
using System.Collections;
namespace MvcUsedKeywords
{
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(string[] args)
{
//顯示2的x方(1<=x<=8)
IEnumerable t = Power(2, 8);
foreach (int i in t)
{
Console.Write("{0} ",i);
}
}
}
}
結(jié)果:2 4 8 16 32 64 128 256
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。