yield关键字
这个关键字在开发过程当中不长用到
说yield之前要先说一下IEnumerable 接口
IEnumerable 接口 :
公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。
简单的迭代就是指foreach循环了
yield关键字:
在迭代器块中用于向枚举数对象提供值或发出迭代结束信号
枚举数对象就好比foreach(object o in objectList)中的o
在下面的示例中,迭代器块(这里是方法 Power(int number, int power))中使用了 yield 语句。当调用 Power 方法时,它返回一个包含数字幂的可枚举对象。注意 Power 方法的返回类型是 IEnumerable(一种迭代器接口类型)。
// yield-example.cs
using 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);
}
}
}
using 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就好像一个方法调用计数器,针对计数值的不同,返回不同的结果。当最后一种yield流程结束时,就相当于计数器归零。