这个问题已经在这里有了答案 :
7年前关闭。
可能的重复: C#-是否有比“打开类型”更好的替代方法?
如果要switch对某种类型的对象进行操作,最好的方法是什么?
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在这种情况下,声明是否合适?
if/else
还是使用开关并添加.ToString()到类型?
.ToString()
如果 确实 需要处理switch对象类型,则可以使用.ToString()。但是,我会不惜一切代价避免这样IDictionary<Type, int>做:它将做得更好,访问者可能是一个过大的杀手,但是否则它仍然是一个完美的解决方案。
IDictionary<Type, int>