处理带有 Yield 返回的 Enumerable 对象的正确模式是什么?

2023-11-26

是否存在返回 Enumerable 中所有项目的标准模式?

我经常发现我的一些代码反映了以下模式:

    public IEnumerable<object> YieldReturningFunction()
    {

        ...
        [logic and various standard yield return]
        ...

        foreach(object obj in methodReturningEnumerable(x,y,z))
        {
            yield return obj;
        }

    }

显式使用 foreach 循环只是为了返回 Enumerable 的结果,这给我带来了代码味道。

显然,我可以放弃使用收益返回,通过显式构建 Enumerable 并将每个标准收益返回的结果添加到其中,以及添加结果的范围来增加代码的复杂性方法返回枚举。这将是不幸的,因此我希望存在一种更好的方法来管理收益率回报模式。


不,没有办法解决这个问题。

这是一个被要求的功能,而且这不是一个坏主意(ayield foreach或其他语言中存在同等内容)。

目前,微软还没有分配时间和金钱来实施它。他们将来可能会也可能不会实施;我猜测(没有事实依据)它在待办事项清单上的某个地方;这只是一个是否/何时在该列表中获得足够高的位置以实际实施的问题。

我能看到的唯一可能的改变就是重构所有的个体yield returns从方法的顶部到它们自己的可枚举返回方法,然后添加一个返回该方法的串联的新方法,并且methodReturningEnumerable(x,y,z)。会不会更好;不,可能不会。这Concat即使不是更多,也会添加与您节省的金额一样多的金额。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理带有 Yield 返回的 Enumerable 对象的正确模式是什么? 的相关文章

随机推荐