1. ホーム
  2. c#

[解決済み】C#のスイッチオンタイプ【重複あり

2022-04-05 12:58:33

質問

<ブロッククオート

重複の可能性があります。

C# - 'switch on type'にこれより良い代替案はありますか?

C#は、オブジェクトの型の切り替えをサポートしていません。

これをシミュレートするのに最適なパターンは何でしょうか。

switch (typeof(MyObj))
    case Type1:
    case Type2:
    case Type3:

解決方法は?

参照 gjvdkampの回答 この機能は現在C#に存在します。


私は通常、型とデリゲートの辞書を使用します。

var @switch = new Dictionary<Type, Action> {
    { typeof(Type1), () => ... },
    { typeof(Type2), () => ... },
    { typeof(Type3), () => ... },
};

@switch[typeof(MyType)]();

caseやcontinueなどのフォールスルーができないので、少し柔軟性に欠ける。でも、どうせ滅多にそんなことはしないんですけどね。