System.Reactive.Subjects.Subject<T>
和System.Reactive.Subjects.ReplaySubject<T>
类有什么区别?
一个不是从另一个派生的,但它们具有相同的描述并在MSDN中实现相同的接口。
答案 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
会记住将来订阅的值(当它“重放”值时)。