我正在學習基本的C# 我有下面的代碼片段翻譯產量的回報
while(p!=null)
{
foreach(var x in X)
yield return x;
//....
foreach(var y in Y)
yield return y;
p=GetP();
}
是上述相同的代碼
IEnumerable<object> os;
while (p!=null)
{
foreach(var x in X)
os.Add(x);
//....
foreach(var y in Y)
os.Add(y);
p=GetP();
}
return os;
???
技術上不行,因爲你不能直接創建一個'IEnumerable',所以第二個例子將不起作用。無論哪種方式,第一個示例按順序返回項,先是'X',然後是'Y',然後調用'GetP',而第二個示例將它們全部添加到枚舉器並調用'GetP'。第一個可能會改變'GetP'返回的結果,並可能給出不同的結果。 –
'IEnumerable <>'沒有'add'方法,所以你不能通過引用'os'添加它。 – Rob