Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RX-zip与组的行为不符合预期-可能存在错误?_C#_System.reactive - Fatal编程技术网

C# RX-zip与组的行为不符合预期-可能存在错误?

C# RX-zip与组的行为不符合预期-可能存在错误?,c#,system.reactive,C#,System.reactive,我有一个包含以下代码的程序,作为我正在尝试执行的其他操作的简化版本: Subject<int> numbers = new Subject<int>(); Subject<string> strings = new Subject<string>(); var oddsAndEvens = numbers.GroupBy(i => i % 2); var zipped = oddsAndEvens.Zip(strings, (gr

我有一个包含以下代码的程序,作为我正在尝试执行的其他操作的简化版本:

Subject<int> numbers = new Subject<int>();
Subject<string> strings = new Subject<string>();
var oddsAndEvens = numbers.GroupBy(i => i % 2);

var zipped = oddsAndEvens.Zip(strings, 
    (group, str) => group.Select(
        i => new Tuple<int, string>(i, str)))
        .SelectMany(x => x);
zipped.Subscribe(t => Console.WriteLine("{0}, {1}", t.Item1, t.Item2));

numbers.OnNext(0);
strings.OnNext("even");
numbers.OnNext(2);

strings.OnNext("odd");
numbers.OnNext(1);
numbers.OnNext(3);

Console.ReadKey();
而我希望输出是

0, even
2, even
1, odd
3, odd 
我认为正在发生的是正在观察0并创建一个组。每个组在观察到一个字符串(并将两个字符串压缩在一起)之前不能输出任何值,但在观察到第一个字符串时,数字0已经消失。如果我正确理解RX,则在有人订阅数字0之前,该组不应输出该数字


我误解了什么吗?有没有办法阻止组输出,直到观察到字符串为止?

不清楚您在这里想要实现什么。Rx的工作正常

Zip操作符的结果选择器捕获一个组流和一个字符串。注意,它没有捕获组流的事件

当结果选择器运行时,组流已发送
0
SelectMany
将在
0
事件结束后订阅群组流

只有当字符串是第一个发送的事件时(将
OnNext(“偶数”)
放在一行上),您才可以确定,因为创建组时将订阅该组,而这正好是第一个事件发送到组之前


GroupBy
操作员不会记住和重播历史事件,而且它的来源很热。

不清楚您在这里想要实现什么。Rx的工作正常

Zip操作符的结果选择器捕获一个组流和一个字符串。注意,它没有捕获组流的事件

当结果选择器运行时,组流已发送
0
SelectMany
将在
0
事件结束后订阅群组流

只有当字符串是第一个发送的事件时(将
OnNext(“偶数”)
放在一行上),您才可以确定,因为创建组时将订阅该组,而这正好是第一个事件发送到组之前

GroupBy
操作员将不会记住和重放历史事件,而且其来源是热的

0, even
2, even
1, odd
3, odd