我有以下代码工作代码,我是从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#中这样做吗?
答案 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);