7
|
Romain Verdier · 技术社区 · 15 年前 |
![]() |
1
5
这就是你要找的吗?
此解决方案依赖于对象状态,因为很难在使用yield的两个IEnumerable方法之间共享状态(没有ref或out参数)。
编辑:添加了用于清除器用法的扩展方法。固定循环测试逻辑,以便首先评估“更多”。 编辑:完成后释放枚举器 |
![]() |
2
3
更好的解决方案,满足所有需求好的,废弃我以前的解决方案(我将把它留在下面,仅供参考)。这里有一个更好的方法,在我做了最初的职位后发生在我身上。
编写一个实现
我是这样做的(很小,如你所见):
(我称之为
现在,在扩展方法中使用这个类来提供您想要的行为并不是那么困难!
注意下面我已经定义了
(为了实现这些方法,我编写了一个简单的
好的,看看。我认为下面的代码示例很好地捕获了类似于您在更新的问题中描述的更现实的场景的内容。
输出:
注意,这也解决了我处理问题的原始答案的问题。
如果你试着打电话还是会有问题的
原始的,混乱的,有点愚蠢的解决方案有件事告诉我说这个我会被完全驳倒,但是… 是的 ,这是可能的(我想)。见下文 该死 我把杂乱的解决方案放在一起。(捕获一个异常以知道它何时结束,所以您 知道 这是一个伟大的设计!)
现在,乔恩的观点是,在你试图做的事情中存在一个非常真实的问题,例如,
不管怎样,这里有一个简单的例子说明它是如何工作的:
输出:
现在,对于(乱七八糟的)代码:
注意,由于这种方法需要传递
枚举器
在几个不同的方法之间,
不会工作
如果该枚举器是值类型,则调用
|
![]() |
3
2
你的第二颗子弹是有问题的。这就是为什么:
这里,它试图迭代第四个组,然后是第一个组…很明显,只有当所有组都得到缓冲时,这才起作用。 或 它可以重新读取序列,两者都不理想。 我怀疑你想要一个更“反应”的方法-我不知道现在是否 Reactive Extensions 做你想做的(连续的要求是不寻常的),但你基本上应该提供一些要在每个组上执行的操作…这样,该方法就不必担心必须返回某些内容,这些内容可以在读完之后使用。 如果您希望我尝试在RX中找到解决方案,或者您对以下内容是否满意,请通知我:
|
![]() |
4
2
这里有一个解决方案,我认为它可以满足您的需求,适用于任何类型的数据项,并且非常简短和易读:
笔记:
如果我弄错了,我会特别感兴趣的评论指出错误! 除此之外非常重要: 此解决方案将 不 允许您以除提供它们的顺序以外的任何顺序枚举生成的可枚举项。但是,我认为原始的海报在评论中已经很清楚了,这不是问题。 |
![]() |
S. Jacson · 任意两台发电机的速度差(内置功能) 2 年前 |
![]() |
Sadeq Dousti · 相当于“嵌套删除”的执行性能SQL查询 2 年前 |
![]() |
Prince · 复制大型文件需要更多时间 3 年前 |
![]() |
Sagar · 为什么在循环之外声明变量会更快? 3 年前 |
![]() |
seco · 如何在不挂起页面的情况下加载JS 3 年前 |