1. ホーム
  2. c#

[解決済み] Case/SwitchとGetTypeを使用してオブジェクトを決定する【重複】。

2022-04-23 02:58:51

質問

<ブロッククオート

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

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

もし、あなたが switch をオブジェクトのタイプに適用する場合、どのような方法があるでしょうか?

コードスニペット

private int GetNodeType(NodeDTO node)
{
    switch (node.GetType())
    { 
        case typeof(CasusNodeDTO):
            return 1;
        case typeof(BucketNodeDTO):
            return 3;
        case typeof(BranchNodeDTO):
            return 0;
        case typeof(LeafNodeDTO):
            return 2;
        default:
            return -1;
    }
}

そういうわけにもいかないのでしょうが、どう解決するのか気になったので。 というのは if/else という文は、この場合、適切なのでしょうか?

それとも、スイッチを使用して .ToString() をタイプに追加しますか?

解決方法は?

もし私が 本当に しなければならない switch オブジェクトの種類によって、私なら .ToString() . しかし、私は何としても避けたい。 IDictionary<Type, int> の方がはるかに良い。 訪問者 はやりすぎかもしれませんが、それ以外は全く問題ない解決策です。