yield关键字的作用是将当前集合中的元素立即返回。
1.返回元素用yield return;(一次一个的返回)
2.结束返回用yield break;(终止迭代)
3.返回类型必须为 IEnumerable、IEnumerable<T>、IEnumerator 或 IEnumerator<T>。
4.参数前不能使用ref和out关键字
5.匿名方法中 不能使用yield
6.unsef中不能使用
7.不能将 yield return 语句置于 try-catch 块中。 可将 yield return 语句置于 try-finally 语句的 try 块中。yield break 语句可以位于 try 块或 catch 块,但不能位于 finally 块
看个例子
public void Ge()
{
foreach (int i in Feige.Fei(richTextBox1))
{
richTextBox1.Text += "返回的结果是:" + i + "\n";
}
}
class Feige
{
public static IEnumerable<int>Fei(RichTextBox rtxt)
{
for (int i = 0; i < 10; i++)
{
yield return i;
Thread.Sleep(1000);
rtxt.Text += "返回后的结果是:" + i + "\n";
}
}
}
返回后的结果是:1
返回的结果是:2
返回后的结果是:2
返回的结果是:3
返回后的结果是:3
返回的结果是:4
返回后的结果是:4
返回的结果是:5
返回后的结果是:5
返回的结果是:6
返回后的结果是:6
返回的结果是:7
返回后的结果是:7
返回的结果是:8
返回后的结果是:8
返回的结果是:9
返回后的结果是:9
这样就是每执行一次for循环就执行一次foreach循环。