C# SequenceEqual如何在被动扩展中工作
我很难弄清楚SequenceEqual在被动扩展版本2.2.5中是如何工作的 下面是代码C# SequenceEqual如何在被动扩展中工作,c#,.net,reactive-programming,C#,.net,Reactive Programming,我很难弄清楚SequenceEqual在被动扩展版本2.2.5中是如何工作的 下面是代码 var subject1 = new Subject<int>(); var subject2 = new Subject<int>(); IObservable<bool> sequenceEqual = subject1.SequenceEqual(subject2); subject1.On
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();
var subject1=新主题();
var subject2=新主题();
IObservable sequenceEqual=主题1.sequenceEqual(主题2);
主题1.OnNext(5);
主题1.OnNext(3);
主题2.OnNext(1);
主题2.OnNext(4);
//如果两个序列已完成,则会通知此消息
Subscribe(b=>Console.WriteLine(“两个序列相等?{0}”,b));
主题1.未完成();
受试者2.未完成();
我希望输出是“两个序列相等?错误”,但结果是正确的,即使它们包含不同的元素
我只是想知道为什么结果会是这样?SequenceEqual实际上做什么?使用SequenceEquals,它将从您订阅的点开始监控。因此,在OnNext调用之前订阅,您的订阅代码或使用ReplaySubjects时会出现错误。这种行为有点奇怪,因为我希望它在声明时被监控,而不是在我订阅通知时被监控。是的,我完全同意。感觉SequenceEquals应该返回一个可连接的可观察对象,因为从平等的角度来看,主体似乎变得“热”。