【发布时间】:2017-01-19 21:00:32
【问题描述】:
我知道如何在返回值IENumerable的方法中产生值
public IEnumerable<int> GetDigits()
{
yield return 1;
yield return 1;
yield return 1;
}
但是嵌套IEnumerable<IEnumerable<int>> 的正确语法如何?
public IEnumerable<IEnumerable<int>> GetNestedDigits()
{
yield return yield return 1; //??
}
【问题讨论】:
-
如果你想产生实际值,你必须产生一个
IEnumerable,然后你需要另一个方法来调用,比如yield return GetDigits();。 -
你想做什么?如果要使用 iterator 返回 IEnumerable,请创建一个返回 IEnumerable 的 different 方法。否则只返回例如
new []{1} -
不存在嵌套收益。您可能在问 nested iterators 自己回答 - 调用另一个迭代器方法。这可以是 lambda 或单独的方法。如果内部枚举来自数据库或集合,则不需要嵌套任何东西'
-
转帖:
yield return Enumerable.Repeat(1, 3); yield return Enumerable.Repeat(1, 3); ... -
@c0rs 请说明您实际上想要做什么。你所问的将迫使你使用双循环来获取单个项目。这是你真正想要的吗?内部枚举从何而来?