考虑以下代码:
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;
}发布于 2012-10-02 23:54:02
由于函数维护的是结果集,我们可以访问它吗?
不,迭代器块不维护任何结果集。
发布于 2012-10-02 23:53:57
当然,你可以这样做。与第二个代码片段相比,逻辑没有太大变化,只是在找到答案时使用yield return:
public static IEnumerable<float> Power(string ticker, float equity, float amount)
{
IList<float> resultSet = new List<float>();
for (int k = 0; MajicNumber(ref k, amount); )
{
float r = CalculateStats(ticker, equity, k);
resultSet.Add(r);
yield return r;
}
}https://stackoverflow.com/questions/12693789
复制相似问题