爲什麼我們不能同時使用return和yield return?爲什麼不能在同一個方法中使用「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;
}
}
等一下,jon雙向飛碟現在會來。 – Juvanis 2012-03-09 08:52:38
我會補充一點,如果你真的需要它,你可以創建一個GetIngegers4,根據條件調用GetIntegers1或GetIntegers2。 – xanatos 2012-03-09 09:03:27
這可能是顯而易見的,但在這種情況下,您總是可以展開您的收藏並返回物品: foreach(var in new [] {4,5,6}) yield return item; – Foo42 2012-03-09 09:04:18