C# yield关键字详解
对于yield关键字我们首先看一下msdn的解释:
如果你在语句中使用yield关键字,则意味着它在其中出现的方法、运算符或get访问器是迭代器。通过使用yield定义迭代器,可在实现自定义集合类型的IEnumerable和IEnumerator模式时无需其他显式类(保留枚举状态的类,有关示例,请参阅IEnumerator<T>)。
yield是一个语法糖
看msdn的解释总是让人感觉生硬难懂。其实yield关键字很好理解。首先我们对于性质有个了解。yield是一个语法糖。既然yield是在C#中的一个语法糖,那么就说明yield是对一种复杂行为的简化,就是将一段代码简化为一种简单的形式,方便我们程序员使用。
那么yield到底是对什么行为的简化。我们首先来看一下yield的使用场景。
还是来看msdn上的例子。
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks;
namespaceConsoleApplication2 { classProgram { staticvoidMain(string[]args) { foreach(intiinPower(2,8,"")) { Console.Write("{0}",i); } Console.ReadKey(); }
publicstaticIEnumerable<int>Power(intnumber,intexponent,strings) { intresult=1;
for(inti=0;i<exponent;i++) { result=result*number; yieldreturnresult; } yieldreturn3; yieldreturn4; yieldreturn5; }
} }