代码之家  ›  专栏  ›  技术社区  ›  Dirk Boer

语法:yield return可枚举,不带循环

  •  2
  • Dirk Boer  · 技术社区  · 12 年前

    有可能吗?

    List<Cat> _Cats; // created somewhere else
    
    public IEnumerable<Cat> LeadWithLolCat()
    {
        yield return RandomLolCat();
    
        // can we return all the other cats without creating a loop?
        foreach ( var cat in _Cats ) // -> so not like this
            yield return cat;
    }
    
    2 回复  |  直到 12 年前
        1
  •  3
  •   Selman Genç    12 年前

    您可以尝试使用 Concat 这样地:

    public IEnumerable<Cat> LeadWithLolCat()
    {
        return new [] { RandomLolCat() }.Concat(_Cats);
    }
    
        2
  •  -3
  •   Will Custode    12 年前

    为了直接回答所问的问题,我认为在给定语法的情况下,不可能达到预期的结果。

    听起来你想要的是 List<Cat> 使用 RandomLolCat 预先准备好的。为什么不在没有 yield 关键字?

    List<Cat> _Cats; // created somewhere else
    
    public IEnumerable<Cat> LeadWithLolCat()
    {
        var result = _Cats.Select(e=> e);
        result.Insert(new RandomLolCat(), 0);
        return result;
    }