かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Reactive Extensions再入門 その18「CountメソッドとLongCountメソッド」

過去記事インデックス

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になるだけなのでコード例と実行例については割愛します。