考虑下面的代码:的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