将所有可观测序列合并到单个可观测序列中。
              Namespace:System.Reactive.Linq
              装配: System.Reactive.dll) 中的 System.Reactive (
语法
'Declaration
Public Shared Function Merge(Of TSource) ( _
    ParamArray sources As IObservable(Of TSource)() _
) As IObservable(Of TSource)
'Usage
Dim sources As IObservable(Of TSource)()
Dim returnValue As IObservable(Of TSource)
returnValue = Observable.Merge(sources)
public static IObservable<TSource> Merge<TSource>(
    params IObservable<TSource>[] sources
)
public:
generic<typename TSource>
static IObservable<TSource>^ Merge(
    ... array<IObservable<TSource>^>^ sources
)
static member Merge : 
        sources:IObservable<'TSource>[] -> IObservable<'TSource> 
JScript does not support generic types and methods.
类型参数
- TSource
源的类型。 
参数
- sources
类型: System.IObservable<TSource>[]
可观测序列。 
返回值
类型: System.IObservable<TSource>
合并可观测序列的元素的可观测序列。
备注
Merge 运算符用于将多个可观测序列合并到单个可观测序列中。 此运算符的各种重载为指定要合并在一起的序列提供了灵活性。 合并序列将继续生成合并序列中的项,直到所有序列都运行完成或其中一个序列生成错误。
示例
以下示例使用 Interval 运算符创建从 0 开始的整数序列。 每 500 毫秒生成一个新整数。 将创建两个筛选序列。 一个序列筛选原始序列,以生成每三个整数。 另一个序列筛选原始序列,以仅生成第 5 个整数。 然后,使用 Merge 运算符将这两个筛选的序列合并为单个整数序列。 为合并序列创建订阅,并将每个项写入控制台窗口。
using System;
using System.Reactive.Linq;
using System.Reactive.Concurrency;
namespace Example
{
  class Program
  {
    static void Main()
    {
      //*********************************************************************************************//
      //*** Generate a sequence of integers producing a new integer every .5 sec.                 ***//
      //*********************************************************************************************//
      var obsInt = Observable.Interval(TimeSpan.FromMilliseconds(500), Scheduler.ThreadPool);
      //*********************************************************************************************//
      //*** Filter the integer sequence to produce only every 3rd integer.                        ***//
      //*********************************************************************************************//
      var obsThrees = obsInt.Where(i => i % 3 == 0);
      //*********************************************************************************************//
      //*** Filter the integer sequence to produce only every 5th integer.                        ***//
      //*********************************************************************************************//
      var obsFives = obsInt.Where(i => i % 5 == 0);
      //***********************************************************************************************//
      //*** Subscribe to a merged sequence of the two filtered sequences. This merged sequence will ***//
      //*** produce every 3rd and every 5th integer.                                                ***//
      //***********************************************************************************************//
      var obs = Observable.Merge(new IObservable<long>[2] {obsThrees, obsFives});
      using (IDisposable handle = obs.Subscribe(x => Console.WriteLine(x)))
      {
        Console.WriteLine("Press ENTER to exit...\n");
        Console.ReadLine();
      }
    }
  }
}
示例代码生成了以下输出。
Press ENTER to exit...
0
0
3
5
6
9
10
12
15
15
18
20
21
24
25
27
30
30