Subject<T> 和 ReplaySubject<T> 之间的主要区别是什么?
What is the key difference between Subject<T> and ReplaySubject<T>?
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
记住未来订阅者的值(当它 "replays" 值时)。
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
记住未来订阅者的值(当它 "replays" 值时)。