小编典典

使用 Case/Switch 和 GetType 来确定对象

all

如果你想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()到类型?


阅读 64

收藏
2022-08-19

共1个答案

小编典典

如果我 真的 必须switch使用对象类型,我会使用.ToString(). 但是,我会不惜一切代价避免它:IDictionary<Type, int>会做得更好,访问者可能是过分的,但否则它仍然是一个完美的解决方案。

2022-08-19