System.Reactive.Subjects.Subject<T>
和System.Reactive.Subjects.ReplaySubject<T>
类之间有什么区别?它们并不互为派生类,但在MSDN中的描述和实现的接口相同。
System.Reactive.Subjects.Subject<T>
和System.Reactive.Subjects.ReplaySubject<T>
类之间有什么区别?它们并不互为派生类,但在MSDN中的描述和实现的接口相同。
请看这段代码:
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
会记住未来订阅者的值(当它“重播”这些值时)。