考虑这种方法:
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 次 |
| 最近记录: |