如何在 Reactive Extension C# 中将 IObserable<bool> 转换为 bool
How to Convert IObserable<bool> to bool in Reactive Extension C#
我想检查 System.Reactive.IObserable<TElement>
是否包含任何元素。
Any()
扩展方法无用,因为它期望 return IObserable<bool>
而不是 bool.
IObservable<bool> IObservable<T>.Any()
扩展方法并非无用:它会尽快获取一个发出 bool
的可观察对象,指示源可观察对象是否发出任何值。当发生以下两个事件之一时,就会发生这种情况:
源序列发出 OnCompleted
。在这种情况下,它没有发出任何值,所以 Any
序列发出 OnNext(false)
然后 OnCompleted
.
源序列发出 OnNext
。所以 Any
序列发出 OnNext(true)
然后 OnCompleted
.
如果您想要 bool
而不是 IObservable<bool>
作为结果,您可以 await
在 async
上下文中观察到 Any
。
IObservable<Prizes> prizes = ...;
bool winner = await prizes.Any();
我想检查 System.Reactive.IObserable<TElement>
是否包含任何元素。
Any()
扩展方法无用,因为它期望 return IObserable<bool>
而不是 bool.
IObservable<bool> IObservable<T>.Any()
扩展方法并非无用:它会尽快获取一个发出 bool
的可观察对象,指示源可观察对象是否发出任何值。当发生以下两个事件之一时,就会发生这种情况:
源序列发出
OnCompleted
。在这种情况下,它没有发出任何值,所以Any
序列发出OnNext(false)
然后OnCompleted
.源序列发出
OnNext
。所以Any
序列发出OnNext(true)
然后OnCompleted
.
如果您想要 bool
而不是 IObservable<bool>
作为结果,您可以 await
在 async
上下文中观察到 Any
。
IObservable<Prizes> prizes = ...;
bool winner = await prizes.Any();