CountAsync
1. 概要
CountAsync は、Observable シーケンスの要素数を数え、その結果を Task<Int32> として返すオペレーターです。述語を指定した場合は、条件を満たす要素のみをカウントします。シーケンスの完了まで待機してから結果を返します。
2. シグネチャ
全要素のカウント
csharp
public static Task<Int32> CountAsync<T>(
this Observable<T> source,
CancellationToken cancellationToken = default)シーケンス内のすべての要素数を返します。
条件付きカウント
csharp
public static Task<Int32> CountAsync<T>(
this Observable<T> source,
Func<T, Boolean> predicate,
CancellationToken cancellationToken = default)predicate を満たす要素のみをカウントして返します。
オーバーロードの使い分け
| オーバーロード | 用途 |
|---|---|
| 述語なし | シーケンスの全要素数を取得する場合 |
| 述語あり | 特定の条件を満たす要素数を取得する場合 |
3. マーブルダイアグラム
ソースシーケンスの各要素を受信するたびにカウンターを増加させ、OnCompleted 時にカウント値が Task の結果として返されます。
4. サンプルコード
csharp
// 全要素数を取得
var source = new[] { 1, 2, 3, 4, 5 }.ToObservable();
int count = await source.CountAsync();
Console.WriteLine(count); // 5csharp
// 条件に一致する要素数を取得
var source = new[] { 1, 2, 3, 4, 5, 6 }.ToObservable();
int evenCount = await source.CountAsync(x => x % 2 == 0);
Console.WriteLine(evenCount); // 35. 補足
- 要素数が
Int32.MaxValue(2,147,483,647)を超える可能性がある場合は、LongCountAsync を使用してください。LongCountAsyncはInt64で結果を返します。