OfType
1. 概要
OfType は、上流から流れてくる値のうち、指定した型 TResult に一致するものだけを フィルタリングしてキャスト するオペレーターです。
型が一致しない値は単にスキップされ、エラーにはなりません。内部的には value is TResult による型チェックを行い、一致した値だけを下流へ流します。
2. シグネチャ
指定した型に一致する値だけを通す
csharp
public static Observable<TResult> OfType<T, TResult>(this Observable<T> source)上流の各値に対して is TResult で型チェックを行い、一致する値だけを TResult として下流へ流します。
csharp
source.OfType<object, string>()3. マーブルダイアグラム
上流から複数の型の値が流れてきた場合、指定した型に一致する値だけが下流へ流れ、一致しない値はスキップされます。
4. サンプルコード
csharp
using R3;
// object 型の Observable から string だけを抽出
Observable<object> source = Observable.Create<object>(observer =>
{
observer.OnNext("Hello");
observer.OnNext(42);
observer.OnNext("World");
observer.OnNext(3.14);
observer.OnCompleted();
return Disposable.Empty;
});
source.OfType<object, string>()
.Subscribe(x => Console.WriteLine(x));
// 出力: Hello, World
// (42 と 3.14 はスキップされる)