Skip to content

Cast

1. 概要

Cast は、上流から流れてくる各値を指定した型 TResultキャスト するオペレーターです。

値が指定した型にキャストできない場合は InvalidCastException がスローされます。安全にキャストできることが分かっている場合に使い、型が合わない値を除外したい場合は OfType を使用してください。

2. シグネチャ

指定した型へキャストする

csharp
public static Observable<TResult> Cast<T, TResult>(this Observable<T> source)

上流の各値を (TResult)(object)value でキャストします。キャストに失敗すると例外が発生します。

csharp
source.Cast<object, string>()

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

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

上流のすべての値が TResult 型へキャストされて下流へ流れます。キャストできない値がある場合はエラーとなります。

4. サンプルコード

csharp
using R3;

// object 型の Observable を string 型へキャスト
Observable<object> source = Observable.Create<object>(observer =>
{
    observer.OnNext("Hello");
    observer.OnNext("World");
    observer.OnCompleted();
    return Disposable.Empty;
});

source.Cast<object, string>()
    .Subscribe(x => Console.WriteLine(x.ToUpper()));
// 出力: HELLO, WORLD

5. 補足

  • OfType は型が一致しない値を スキップ しますが、Cast は型が一致しない場合に 例外をスロー します。すべての値が確実に指定した型であると分かっている場合は Cast、不確実な場合は OfType を使ってください。