C# yield用法
yield 关键字向编译器指示它所在的方法是迭代器块
yield 关键字与 return 关键字结合使用,向枚举器对象提供值。
这是一个返回值,例如,在 foreach 语句的每一次循环中返回的值。
yield 关键字也可与 break 结合使用,表示迭代结束。
例子:
yield return <expression>;
yield break;
在 yield return 语句中,将计算 expression 并将结果以值的形式返回给枚举器对象;expression 必须可以隐式转换为 yield 类型的迭代器。
这里看一个例子:(返回集合中大于5的值)
普通写法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
这种写法很普通,写起来也很容易理解
yield写法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
yield写法很明显比普通写法代码更加简洁,性能也更高
普通写法是将满足条件的全部查询出来保存到一个临时变量中,最后全部返回出去
客户端调用
1 2 3 4 5 |
|
在执行numList.FilterNum()的时候并不会返回结果,也不会进入FilterNum()方法,只有在遍历(foreach)的时候,才会进入FilterNum()方法,而且每遍历一次进入一次
yield return 每次遇到符合条件的都会立即返回对应的值出去,遇到yield break会结束迭代器
yield 在.net framework中是非常普遍的
使用Linq分页技术我们通常都是使用Skip和Take关键字