Subject <t>和ReplaySubject <t>之间的主要区别是什么?

时间:2015-11-05 10:26:52

标签: c# system.reactive

System.Reactive.Subjects.Subject<T>System.Reactive.Subjects.ReplaySubject<T>类有什么区别?

一个不是从另一个派生的,但它们具有相同的描述并在MSDN中实现相同的接口。

1 个答案:

答案 0 :(得分:9)

拿这段代码:

var subject = new Subject<int>();

subject.OnNext(42);
subject.OnCompleted();

subject.Subscribe(x => Console.WriteLine(x));

与此相比:

var subject = new ReplaySubject<int>();

subject.OnNext(42);
subject.OnCompleted();

subject.Subscribe(x => Console.WriteLine(x));

第一个没有产生任何值。第二个产生42

基本上Subject只为当前订阅者生成值,而ReplaySubject会记住将来订阅的值(当它“重放”值时)。