【发布时间】:2012-03-26 17:39:34
【问题描述】:
为什么我们不能在同一个方法中同时使用 return 和 yield return?
例如,我们可以在下面有 GetIntegers1 和 GetIntegers2,但不能有 GetIntegers3。
public IEnumerable<int> GetIntegers1()
{
return new[] { 4, 5, 6 };
}
public IEnumerable<int> GetIntegers2()
{
yield return 1;
yield return 2;
yield return 3;
}
public IEnumerable<int> GetIntegers3()
{
if ( someCondition )
{
return new[] {4, 5, 6}; // compiler error
}
else
{
yield return 1;
yield return 2;
yield return 3;
}
}
【问题讨论】:
-
等一下,乔恩·斯基特马上就来。
-
我会补充一点,如果您真的需要它,您可以创建一个 GetIngegers4,根据条件调用 GetIntegers1 或 GetIntegers2。
-
这可能很明显,但在这种情况下,您总是可以展开您的集合并返回项目:foreach(var item in new[]{4,5,6}) yield return item;
标签: c# return ienumerable yield-return