.NET开发人员的反应性扩展

时间:2018-12-06 05:05:49

标签: reactivex rx.net

我找到了一些有关此的信息,但对此有一些困惑。因此,当我们需要使用此RX.NET时。

使用此物品的重要意义是什么?当我需要使用它时?

1 个答案:

答案 0 :(得分:1)

与每个工具集一样,它可以影响您解决问题的方式。如果用锤子,所有的问题都可能变成钉子。与Rx.NET相同。它为您提供了一种新方法。是否选择针对特定问题使用此方法取决于您,与任何工具或技术一样,都有其优缺点。您需要学习并获得经验,才能为自己做出这些复杂的判断。

对于初学者来说,Rx.NET允许您培养“反应式”编程的方法。这类似于函数式编程,即您将行为声明为由基本行为组成。 Rx.NET允许您在流上指定函数以提供新的流。这项强大的技术几乎可以应用于您能想到的任何问题。

例如,使用Linq和Rx.NET在边界框内的屏幕上绘制鼠标移动作为点的程序将类似于:

mouseMovements.Where(box.Contains(m)).Subscribe(DrawPoint)

其中mouseMovements将是您的鼠标事件as an observable

您可以声明

myPointsInBox = mouseMovements.Where(box.Contains(m))

作为其自己的可观察者并具有多个订阅者:

myPointsInBox.Subscribe(DrawPoint)
myPointsInBox.Subscribe(ConnectWithLines)
myPointsInBox.Subscribe(UpdatePointCounter)

您可以从流中制作流

var everyThousandthPoint= myPointsInBox.Buffer(….).Select(…)

然后与他们做事

   everyThousandthPoint.Subscribe(FlashPointCounter)

您明白了。