F#:Add方法和IObserver的关系是什么<>

时间:2015-10-10 16:17:23

标签: f# system.reactive

我有以下代码工作代码,我是从Mark Seeman的Pluralsight视频中获得的。我不明白最后一行是如何工作的。

let sharpObjectCollection = ConcurrentBag<Envelope<SharpObject>>()
let sharpObjectSubject = new Subjects.Subject<Envelope<SharpObject>>()
sharpObjectSubject.Subscribe sharpObjectCollection.Add |> ignore

通过documentation for Subscribe,我看到它需要IObserver作为参数,但我将它传递给ConcurrentBag.Add method

这里发生了什么?这是F#的一个特色吗?我也可以在c#中这样做吗?

1 个答案:

答案 0 :(得分:5)

它看起来正在调用this extension method,它定义了Subscribe的重载,它接受Action<T> onNext处理程序。您也可以在C#中执行此操作:

var bag = new ConcurrentBag<Envelope<SharpObject>>();
var subject = new Subject<Envelope<SharpObject>>();
subject.Subscribe(bag.Add);