在Observable.FromEvent
中有这样一个签名的目的是什么? ?
对于 example :
var appActivated = Observable.FromEvent(
h => Application.Current.Activated += h,
h => Application.Current.Activated -= h);
特别是h
是什么?为什么是 +=
,然后是 -=
?我们是从事件还是从事件处理程序创建 Observable
?如果来自事件,为什么不只是有一个像这样的签名:
var appActivated = Observable.FromEvent(Application.Current.Activated);
最佳答案
那是因为无法将事件作为参数 传递给方法。您可以作为委托(delegate) 传递事件,但这并不能使您能够订阅/取消订阅该事件。看这个answer埃里克·利珀特 (Eric Lippert)。
Observable.From
基本上说“好的,我会给你一个 observable,它是事件的包装器,但你需要为我提供两个委托(delegate):1) 一个委托(delegate)供我订阅我的事件处理程序,以及 2) 一个委托(delegate),让我在需要时取消订阅我的处理程序”。
所以在这种情况下,h => Application.Current.Activated += h
是一个被编译成委托(delegate)的 lambda 表达式。 h
(处理程序)是输入参数,委托(delegate)接受该输入参数并将其订阅到 Activated
事件。第二个委托(delegate)是同一件事,只是它取消了处理程序的订阅。
关于c# - Observable.FromEvent 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35865972/