这个关键字在开发过程当中不长用到
说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);
}
}
}
得到的结果是:
2
4
8
16
32
64
128
256
yield就好像一个方法调用计数器,针对计数值的不同,返回不同的结果。当最后一种yield流程结束时,就相当于计数器归零。