ToArrayAsync
1. 概要
ToArrayAsync は、Observable シーケンスのすべての要素を収集し、配列(T[])を Task<T[]> として返すオペレーターです。シーケンスが完了するまで要素をバッファリングします。
2. シグネチャ
配列への変換
csharp
public static Task<T[]> ToArrayAsync<T>(
this Observable<T> source,
CancellationToken cancellationToken = default)シーケンスのすべての要素を T[] に収集します。要素は発行された順序で格納されます。
3. マーブルダイアグラム
シーケンスのすべての要素を収集し、完了時に配列を単一の結果として出力します。
4. サンプルコード
csharp
// 基本的な使い方:Observable を配列に変換
var source = new[] { 1, 2, 3, 4, 5 }.ToObservable();
int[] array = await source.ToArrayAsync();
Console.WriteLine(string.Join(", ", array)); // 1, 2, 3, 4, 5csharp
// フィルタリング後に配列として収集
var evenNumbers = await Observable.Range(1, 10)
.Where(x => x % 2 == 0)
.ToArrayAsync();
Console.WriteLine(string.Join(", ", evenNumbers)); // 2, 4, 6, 8, 10csharp
// 空のシーケンスは空の配列を返す
var empty = await Observable.Empty<int>().ToArrayAsync();
Console.WriteLine(empty.Length); // 05. 補足
- ToListAsync と比較すると、
ToArrayAsyncはT[](固定サイズ)を返し、ToListAsyncはList<T>(可変サイズ)を返します。 ToArrayAsyncの方がアロケーションがわずかに少ない場合がありますが、結果をそのまま使用するだけなら大きな違いはありません。- 後から要素の追加・削除が必要な場合は ToListAsync を使用してください。