我几乎知道它是不可能的并且毫无意义,但是只是尝试学习。
public IEnumerable<IEnumerable<object>> GetMany()
{
while (someCondition)
yield return GetFew();
}
static IEnumerable<object> GetFew()
{
while (someOtherCondition)
yield return new object();
}
我可以将两者结合起来形成一种方法吗?一个方法中可以有两个不同的迭代器块吗?
编辑:我不是问如何解决我手头的问题。我正在尝试学习新的东西,所以更大的问题是“可以使两个单独的块在一个函数中一起工作”?我问是因为C#中存在匿名类型和闭包,您可以在方法内部定义一些新的东西而无需命名类型或方法。同样是方块吗?
最佳答案
您要的是匿名迭代器块。埃里克·利珀特(Eric Lippert)blogged on the subject前阵子。简而言之,他说这将是他希望看到的一个很棒的功能,但是要真正实现这样的功能非常困难,因此到目前为止,它还没有添加到语言中(将来添加它是不太可能)。