過去記事インデックス
- Reactive Extensions再入門 その1
- Reactive Extensions再入門 その2「IObservableインターフェースとIObserverインターフェース」
- Reactive Extensions再入門 その3「IObservableのファクトリメソッド」
- Reactive Extensions再入門 その4「Timer系のファクトリメソッド」
- Reactive Extensions再入門 その5「HotとCold」
- Reactive Extensions再入門 その6「HotなIObservableを作成するファクトリ」
- Reactive Extensions再入門 その7「LINQスタイルの拡張メソッド」
- Reactive Extensions再入門 その8「SkipとTakeメソッド」
- Reactive Extensions再入門 その9「Skip + Take + Repeat = ドラッグ」
- Reactive Extensions再入門 その10「Doメソッド」
- Reactive Extensions再入門 その11「Catchメソッド」
- Reactive Extensions再入門 その12「Finallyメソッドとリソース解放」
- Reactive Extensions再入門 その13「最後の値を取得するLatestとMostRecentメソッド」
- Reactive Extensions再入門 その14「Nextメソッド」
- Reactive Extensions再入門 その15「To*****系メソッド」
- Reactive Extensions再入門 その16「最大、最少、平均を求めるメソッド」
- Reactive Extensions再入門 その17「集計するメソッド」
CountメソッドとLongCountメソッド
ここでは、CountメソッドとLongCountメソッドについて説明します。これはIObservable
var s = new Subject<int>(); // 数を数える s.Count() // 購読 .Subscribe( i => Console.WriteLine("Count OnNext({0})", i), () => Console.WriteLine("Count OnCompleted()")); // 値の発行〜完了通知 Console.WriteLine("OnNext(1)"); s.OnNext(1); Console.WriteLine("OnNext(10)"); s.OnNext(10); Console.WriteLine("OnNext(100)"); s.OnNext(100); Console.WriteLine("OnCompleted()"); s.OnCompleted();
値を3つ発行してOnCompletedメソッドを呼び出しています。実行結果を下記に示します。
OnNext(1) OnNext(10) OnNext(100) OnCompleted() Count OnNext(3) Count OnCompleted()
3つの値を発行したので3がSubscribeで購読しているところに流れてきていることが確認できます。LongCountは、流れてくる値の型がintからlongになるだけなのでコード例と実行例については割愛します。