Freigeben über


Observable.Generate<TState, TResult-Methode> (TState, Func<TState, Boolean>, Func<TState, TState>, Func<TState, TResult>, IScheduler)

Generiert eine beobachtbare Sequenz, indem sie einen Zustand aus einem Anfangszustand iteriert, bis die Bedingung fehlschlägt.

Namespace:System.Reactive.Linq
Versammlung: System.Reaktiv (in System.Reactive.dll)

Syntax

'Declaration
Public Shared Function Generate(Of TState, TResult) ( _
    initialState As TState, _
    condition As Func(Of TState, Boolean), _
    iterate As Func(Of TState, TState), _
    resultSelector As Func(Of TState, TResult), _
    scheduler As IScheduler _
) As IObservable(Of TResult)
'Usage
Dim initialState As TState
Dim condition As Func(Of TState, Boolean)
Dim iterate As Func(Of TState, TState)
Dim resultSelector As Func(Of TState, TResult)
Dim scheduler As IScheduler
Dim returnValue As IObservable(Of TResult)

returnValue = Observable.Generate(initialState, _
    condition, iterate, resultSelector, _
    scheduler)
public static IObservable<TResult> Generate<TState, TResult>(
    TState initialState,
    Func<TState, bool> condition,
    Func<TState, TState> iterate,
    Func<TState, TResult> resultSelector,
    IScheduler scheduler
)
public:
generic<typename TState, typename TResult>
static IObservable<TResult>^ Generate(
    TState initialState, 
    Func<TState, bool>^ condition, 
    Func<TState, TState>^ iterate, 
    Func<TState, TResult>^ resultSelector, 
    IScheduler^ scheduler
)
static member Generate : 
        initialState:'TState * 
        condition:Func<'TState, bool> * 
        iterate:Func<'TState, 'TState> * 
        resultSelector:Func<'TState, 'TResult> * 
        scheduler:IScheduler -> IObservable<'TResult> 
JScript does not support generic types and methods.

Typparameter

  • TState
    Der Zustandstyp.
  • TResult
    Der Typ des Ergebnisses.

Parameter

  • initialState
    Typ: TState
    Der Anfangszustand.
  • Durchlaufen
    Typ: System.Func<TState, TState>
    Die Iterationsschrittfunktion.
  • Resultselector
    Typ: System.Func<TState, TResult>
    Die Selektorfunktion für ergebnisse, die in der Sequenz erzeugt werden.

Rückgabewert

Typ: System.IObservable<TResult>
Die generierte Sequenz.

Bemerkungen

Der Generate-Operator generiert eine Sequenz vom Typ TState, indem die Iteratefunktion auf initialState angewendet wird, bis die Bedingungsfunktion false für den aktuellen Zustand zurückgibt. Die resultSelector-Funktion wird für jeden Zustand ausgeführt, um jedes Element in der resultierenden Sequenz zu generieren.

Beispiele

In diesem Codebeispiel wird der Generate-Operator verwendet, um eine Sequenz der ganzen Zahlen zu generieren, die perfekte Quadrate kleiner als 1000 sind.

using System;
using System.Reactive.Concurrency;
using System.Reactive.Linq;

namespace Example
{
  class Program
  {
    static void Main()
    {
      //*********************************************************************************************//
      //*** Generate a sequence of integers which are the perfect squares that are less than 100. ***//
      //*********************************************************************************************//

      var obs = Observable.Generate(1,                      // Initial state value
                                    x => x * x < 1000,      // The termination condition. Terminate generation when false (the integer squared is not less than 1000).
                                    x => x + 1,             // Iteration step function updates the state and returns the new state. In this case state is incremented by 1.
                                    x => x * x,             // Selector function determines the next resulting value in the sequence. The state of type in is squared.
                                    Scheduler.ThreadPool);  // The ThreadPool scheduler runs the generation on a thread pool thread instead of the main thread.

      using (IDisposable handle = obs.Subscribe(x => Console.WriteLine(x)))
      {
        Console.WriteLine("Press ENTER to exit...\n");
        Console.ReadLine();
      }
    }
  }
}

Die folgende Ausgabe veranschaulicht die Ausführung des Beispielcodes.

Press ENTER to exit...

1
4
9
16
25
36
49
64
81
100
121
144
169
196
225
256
289
324
361
400
441
484
529
576
625
676
729
784
841
900
961

Weitere Informationen

Verweis

Beobachtbare Klasse

Generieren einer Überladung

System.Reactive.Linq-Namespace