Reactive Extensions 中的 SequenceEqual 如何工作
How does SequenceEqual work in Reactive Extensions
我很难弄清楚 SequenceEqual 在 Reactive Extensions 2.2.5 版中是如何工作的
下面是代码
var subject1 = new Subject<int>();
var subject2 = new Subject<int>();
IObservable<bool> sequenceEqual = subject1.SequenceEqual(subject2);
subject1.OnNext(5);
subject1.OnNext(3);
subject2.OnNext(1);
subject2.OnNext(4);
//This will be notified if the two sequences completed
sequenceEqual.Subscribe(b => Console.WriteLine("Two sequences are equal ? {0}", b));
subject1.OnCompleted();
subject2.OnCompleted();
我预计输出会是 "Two sequences are equal? False",但结果是 True,即使它们包含不同的元素。
我只是想知道为什么结果是这样的? SequenceEqual 实际上做了什么?
使用 SequenceEquals,它将从您订阅的那一刻开始监控。因此,在 OnNext 调用之前订阅,您将在订阅代码中得到 false 或使用 ReplaySubjects。
我很难弄清楚 SequenceEqual 在 Reactive Extensions 2.2.5 版中是如何工作的
下面是代码
var subject1 = new Subject<int>();
var subject2 = new Subject<int>();
IObservable<bool> sequenceEqual = subject1.SequenceEqual(subject2);
subject1.OnNext(5);
subject1.OnNext(3);
subject2.OnNext(1);
subject2.OnNext(4);
//This will be notified if the two sequences completed
sequenceEqual.Subscribe(b => Console.WriteLine("Two sequences are equal ? {0}", b));
subject1.OnCompleted();
subject2.OnCompleted();
我预计输出会是 "Two sequences are equal? False",但结果是 True,即使它们包含不同的元素。
我只是想知道为什么结果是这样的? SequenceEqual 实际上做了什么?
使用 SequenceEquals,它将从您订阅的那一刻开始监控。因此,在 OnNext 调用之前订阅,您将在订阅代码中得到 false 或使用 ReplaySubjects。