首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IEnumerable with Yield语句

IEnumerable with Yield语句
EN

Stack Overflow用户
提问于 2012-10-02 23:50:20
回答 2查看 165关注 0票数 2

考虑以下代码:

代码语言:javascript
复制
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?
    }
}

既然函数维护的是结果集,我们能访问它吗?

传统的对应物是:

代码语言:javascript
复制
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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-02 23:54:02

由于函数维护的是结果集,我们可以访问它吗?

不,迭代器块不维护任何结果集。

票数 3
EN

Stack Overflow用户

发布于 2012-10-02 23:53:57

当然,你可以这样做。与第二个代码片段相比,逻辑没有太大变化,只是在找到答案时使用yield return

代码语言:javascript
复制
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;
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12693789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档