ToListAsync
1. 概要
ToListAsync は、Observable シーケンスのすべての要素を収集し、List<T> を Task<List<T>> として返すオペレーターです。シーケンスが完了するまで要素をバッファリングします。
2. シグネチャ
リストへの変換
csharp
public static Task<List<T>> ToListAsync<T>(
this Observable<T> source,
CancellationToken cancellationToken = default)シーケンスのすべての要素を List<T> に収集します。要素は発行された順序で格納されます。
3. マーブルダイアグラム
シーケンスのすべての要素を収集し、完了時にリストを単一の結果として出力します。
4. サンプルコード
csharp
// 基本的な使い方:Observable をリストに変換
var source = new[] { 1, 2, 3, 4, 5 }.ToObservable();
List<int> list = await source.ToListAsync();
Console.WriteLine(string.Join(", ", list)); // 1, 2, 3, 4, 5csharp
// 変換やフィルタリング後にリストとして収集
List<string> upperNames = await new[] { "alice", "bob", "charlie" }
.ToObservable()
.Select(name => name.ToUpper())
.ToListAsync();
Console.WriteLine(string.Join(", ", upperNames)); // ALICE, BOB, CHARLIEcsharp
// リストとして取得した後に追加操作が可能
List<int> list = await Observable.Range(1, 3).ToListAsync();
list.Add(4);
list.Add(5);
Console.WriteLine(string.Join(", ", list)); // 1, 2, 3, 4, 5csharp
// 空のシーケンスは空のリストを返す
var empty = await Observable.Empty<int>().ToListAsync();
Console.WriteLine(empty.Count); // 0