gpt4 book ai didi

c# - 为什么 TakeLast() 方法不适用于 ReplaySubject

转载 作者:太空宇宙 更新时间:2023-11-03 20:32:31 24 4
gpt4 key购买 nike

根据 MSDN 文档,以下代码应将“5”输出到控制台窗口。相反,不显示任何内容。

static void Main(string[] args)
{
var o = new ReplaySubject<int>();

o.OnNext(0);
o.OnNext(1);
o.OnNext(2);
o.OnNext(3);
o.OnNext(4);
o.OnNext(5);

o.TakeLast(1).Subscribe(Console.WriteLine);

Console.WriteLine("Press any key to exit");
Console.ReadKey();
}

预期输出:

5
Press any key to exit

实际输出:

Press any key to exit

谁能解释一下为什么会这样?

最佳答案

那是因为你从来没有通知序列完成,所以TakeLast不知道序列已经完成并继续等待序列结束。这按预期工作:

var o = new ReplaySubject<int>();

o.OnNext(0);
o.OnNext(1);
o.OnNext(2);
o.OnNext(3);
o.OnNext(4);
o.OnNext(5);
o.OnCompleted();

o.TakeLast(1).Subscribe(Console.WriteLine);

关于c# - 为什么 TakeLast<T>() 方法不适用于 ReplaySubject<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6760212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com