gpt4 book ai didi

c# - Observable.FromEvent 签名

转载 作者:行者123 更新时间:2023-11-30 19:15:36 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com