我很难弄清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();


我期望输出为“两个序列相等吗?False”,但是即使它们包含不同的元素,结果也为True。



我只是想知道为什么结果是这样的? SequenceEqual实际做什么?

最佳答案

使用SequenceEquals,它将从您订阅的位置进行监视。因此,在OnNext调用之前订阅,您的订阅代码将为false或使用ReplaySubjects。

09-20 18:33