考慮下面的代碼:的IEnumerable與產量聲明
public static IEnumerable<float> Power(string ticker, float equity, float amount)
{
for (int k = 0; MajicNumber(ref k, amount);)
{
yield return CalculateStats(ticker, equity, k);
// Can we get the value of current resultset here?
}
}
由於該功能是維持這個結果集合,我們就可以訪問它?
傳統的對應是:
public static IEnumerable<float> Power(string ticker, float equity, float amount)
{
List<float> resultSet = new List<float>();
for (int k = 0; MajicNumber(ref k, amount);)
{
resultSet.Add(CalculateStats(ticker, equity, k));
// resultSet is accessible here
}
return resultSet;
}
你的第二個例子應該是'List'不是'ArrayList' ... –
@JamesMichaelHare,謝謝修復。 –
訪問結果集時你想做什麼?出於某種原因你想訪問以前的值嗎?如果是這樣的話,「收益率回報」模型可能不是最好的方式。如果你想改變以前的值出於某種原因,那麼'yield return'肯定不會是你想要的。如果後面的代碼做了你想做的事情,爲什麼你想把它改變成前一種風格(假設這是發生的事情)? – Chris