かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

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