【发布时间】:2010-10-17 01:44:14
【问题描述】:
可能重复:
C# - Is there a better alternative than this to ‘switch on type’?
如果您想在一种对象上switch,最好的方法是什么?
代码 sn-p
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()添加到类型?
【问题讨论】:
-
如果有人感兴趣,Peter Hallam 会在blogs.msdn.com/peterhal/archive/2005/07/05/435760.aspx@ 讨论为什么这不是 C# 的一个特性
-
我知道这是 2017 年,但这是一条旧评论……刚刚阅读了 Peter Hallam 的那篇文章,我现在很困惑。 C#7 允许在 case 语句的顺序很重要的地方切换——这肯定是冲突的,因为这似乎是他没有被添加到语言中的主要原因之一?
-
您实际上可以在 c# 7 中打开类型...我猜他们在 12 年后改变了主意(或想出了更好的方法):stackoverflow.com/questions/298976/…
-
相关说明:VB.NET内置了这个功能。
-
是的,看起来应该可以。你会认为 typeof( )s 会在编译时被解析,因此会为运行时生成一个常量来打开,但可惜不是。反正还没有。 :(
标签: c# .net reflection switch-statement case