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. マーブルダイアグラム
ソースシーケンスが要素を発行せずに完了すると true が返されます。要素が 1 つでも発行されると、その時点で false が返されます。
4. サンプルコード
csharp
// 空のシーケンス
var empty = Observable.Empty<int>();
bool isEmpty = await empty.IsEmptyAsync();
Console.WriteLine(isEmpty); // Truecsharp
// 要素のあるシーケンス
var source = new[] { 1, 2, 3 }.ToObservable();
bool isEmpty = await source.IsEmptyAsync();
Console.WriteLine(isEmpty); // False5. 補足
- AnyAsync の論理否定に相当します。
await IsEmptyAsync()は!(await AnyAsync())と等価です。 - 用途に応じて使い分けてください。「要素が存在するか」を確認したい場合は
AnyAsync、「空であるか」を確認したい場合はIsEmptyAsyncが意図を明確に表現できます。