Skip to content

IsEmptyAsync

1. 概要

IsEmptyAsync は、Observable シーケンスが要素を発行せずに完了するかどうかを判定し、その結果を Task<Boolean> として返すオペレーターです。シーケンスが空の場合は true を、1 つ以上の要素が発行された場合は false を返します。最初の要素を受信した時点で false を返して短絡評価を行います。

2. シグネチャ

空判定

csharp
public static Task<Boolean> IsEmptyAsync<T>(
    this Observable<T> source,
    CancellationToken cancellationToken = default)

シーケンスが空(要素を一つも発行せずに OnCompleted に到達)の場合に true を返します。最初の要素を受信した時点で即座に false を返し、購読を解除します。

3. マーブルダイアグラム

IsEmptyAsync のマーブルダイアグラム

ソースシーケンスが要素を発行せずに完了すると true が返されます。要素が 1 つでも発行されると、その時点で false が返されます。

4. サンプルコード

csharp
// 空のシーケンス
var empty = Observable.Empty<int>();

bool isEmpty = await empty.IsEmptyAsync();
Console.WriteLine(isEmpty); // True
csharp
// 要素のあるシーケンス
var source = new[] { 1, 2, 3 }.ToObservable();

bool isEmpty = await source.IsEmptyAsync();
Console.WriteLine(isEmpty); // False

5. 補足

  • AnyAsync の論理否定に相当します。await IsEmptyAsync()!(await AnyAsync()) と等価です。
  • 用途に応じて使い分けてください。「要素が存在するか」を確認したい場合は AnyAsync、「空であるか」を確認したい場合は IsEmptyAsync が意図を明確に表現できます。