考虑这种方法:
public IEnumerable<T> GetList(int Count)
{
foreach (var X in Y)
{
// do a lot of expensive stuff here (e.g. traverse a large HTML document)
// when we reach "Count" then exit out of the foreach loop
}
}
Run Code Online (Sandbox Code Playgroud)
我会这样称呼它:Class.GetList(10);
它会返回10个项目 - 这很好.
我想使用IEnumerable
的Take()
方法Class.GetList().Take(10)
代替使用,我希望foreach循环能够以某种方式获取我传入的数字Take()
- 这可能吗?这似乎是一种更清洁的方法,因为它最终会更便宜,因为我可以使用Class.GetList()
一次获取完整列表然后使用IEnumerable
方法来获取x项.
多谢你们!
您可以通过将方法实现为迭代器块来实现此目的:
public IEnumerable<T> GetList()
{
foreach (var X in Y)
{
// do something
yield return something;
}
}
Run Code Online (Sandbox Code Playgroud)
当您Take(10)
只调用前10个元素时,将不会运行该方法的其余部分.
归档时间: |
|
查看次数: |
148 次 |
最近记录: |