Case/SwitchとGetTypeを使用してオブジェクトを決定する [重複] 質問する

Case/SwitchとGetTypeを使用してオブジェクトを決定する [重複] 質問する

重複の可能性あり:
C# - 「スイッチオン型」よりも優れた代替手段はありますか?

あるタイプのオブジェクトをオンにしたい場合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()タイプに追加しますか?

ベストアンサー1

これは、独自のユーザー定義型をオンにしたい場合、直接的に問題を解決するものではありませんが、組み込み型のみをオンにしたい他の人のために、タイプコード列挙:

switch (Type.GetTypeCode(node.GetType()))
{
    case TypeCode.Decimal:
        // Handle Decimal
        break;

    case TypeCode.Int32:
        // Handle Int32
        break;
     ...
}

おすすめ記事