如何生成嵌套的 IENumerable?
How to yield a nested IENumerable?
我知道如何在具有 return 值 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; //??
}
像这样
public IEnumerable<IEnumerable<int>> GetNestedDigits()
{
yield return new List<int>
{
1
};
}
您不能直接嵌套 yield return
语句。您必须创建另一种方法:
public IEnumerable<IEnumerable<int>> GetNestedDigits()
{
yield return GetNestedEnumerable();
}
public IEnumerable<int> GetNestedEnumerable()
{
yield return 1;
}
如果我从字面上理解你所有的文字,你可以使用:
IEnumerable<IEnumerable<int>> GetNestedDigits()//{1, 2, 3}, {1, 2, 3}, {1, 2, 3}
{
yield return new int[] { 1, 2, 3 };
yield return new int[] { 1, 2, 3 };
}
您必须声明某种实现 IEnumerable 和 return 的集合。您不能直接嵌套收益率。也许更接近的方法是声明 private IEnumerables 然后你 return.
IEnumerable<int> GetNestedDigitsA()
{
yield return 1;
yield return 2;
yield return 3;
}
IEnumerable<int> GetNestedDigitsB()
{
yield return 1;
yield return 2;
yield return 3;
}
IEnumerable<IEnumerable<int>> GetNestedDigits()//{1, 2, 3}, {1, 2, 3}
{
yield return GetNestedDigitsA();
yield return GetNestedDigitsB();
}
我知道如何在具有 return 值 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; //??
}
像这样
public IEnumerable<IEnumerable<int>> GetNestedDigits()
{
yield return new List<int>
{
1
};
}
您不能直接嵌套 yield return
语句。您必须创建另一种方法:
public IEnumerable<IEnumerable<int>> GetNestedDigits()
{
yield return GetNestedEnumerable();
}
public IEnumerable<int> GetNestedEnumerable()
{
yield return 1;
}
如果我从字面上理解你所有的文字,你可以使用:
IEnumerable<IEnumerable<int>> GetNestedDigits()//{1, 2, 3}, {1, 2, 3}, {1, 2, 3}
{
yield return new int[] { 1, 2, 3 };
yield return new int[] { 1, 2, 3 };
}
您必须声明某种实现 IEnumerable 和 return 的集合。您不能直接嵌套收益率。也许更接近的方法是声明 private IEnumerables 然后你 return.
IEnumerable<int> GetNestedDigitsA()
{
yield return 1;
yield return 2;
yield return 3;
}
IEnumerable<int> GetNestedDigitsB()
{
yield return 1;
yield return 2;
yield return 3;
}
IEnumerable<IEnumerable<int>> GetNestedDigits()//{1, 2, 3}, {1, 2, 3}
{
yield return GetNestedDigitsA();
yield return GetNestedDigitsB();
}