![]() |
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。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 6 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 6 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 6 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 7 月前 |