![]() |
1
1
问得好。它们产生相同的结果,但内部实现是完全不同的。 EnumerableEx.for将被添加到System.Interactive中,以保持iobservable和ienumerable之间的对偶性。注意observable.for和observable.selectmany是不同的:
VS,
因此,您希望EnumerableEx.for具有此签名,而不是它实际具有的签名:
但是,它显然不需要一个不可观测的源。也许是故意的。我会在RX论坛上问你问题,看看RX团队是否有答案。 |
![]() |
2
0
它们对我来说就像是等价的功能。SelectMany是IEnumerable上的扩展方法。for在EnumerableEx上作为静态方法写入,因此它们的调用方式不同。
我相信使用每一个都有具体的原因。 |
![]() |
3
0
我的猜测是selectmany动态遍历所有内容,而concat(in for) 遍历它的所有外部IEnumerable元素,然后开始使用它们进行注册和迭代。 换句话说,concat使用一个固定的IEnumerable集,即使它作为IEnumerable接收它们。因此,在for中,甚至在返回第一个treult之前创建了整个IEnumerable集。在selectmany中,您会立即收到一个treult。 |
![]() |
Nicolas · c#/中多个Rx受试者的依赖注入。净核心 7 年前 |
![]() |
user584018 · 如何获取文件的增量内容 7 年前 |
![]() |
SuperJMN · 如何计算LINQ管道要完成的ETA? 7 年前 |
![]() |
Seishin Okigaru · RXSwift,检测到重入异常 7 年前 |
![]() |
marsop · 在typescript中观察集合 7 年前 |