Subject<T> 和 ReplaySubject<T> 的主要区别是什么?

3

System.Reactive.Subjects.Subject<T>System.Reactive.Subjects.ReplaySubject<T>类之间有什么区别?它们并不互为派生类,但在MSDN中的描述和实现的接口相同。


4
请阅读 https://msdn.microsoft.com/en-us/library/hh242970(v=vs.103).aspx 的最后一段。 - Jon Skeet
1个回答

10

请看这段代码:

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会记住未来订阅者的值(当它“重播”这些值时)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接