可能重复: C# – 有没有比这更好的替代“打开types”? 如果你想switch一个types的对象,最好的办法是什么? 代码片段 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()的types?
我在eclipse上开发一个android应用程序,当我尝试一些代码 switch(String){ …… } 它给我以下错误 Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enum variables are permitted 所以我把编译器改为1.7,然后给我另一个错误 Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties. 那么,有没有让开关(String)在Android应用程序中工作? 否则我不得不使用 if(){} else if(){} else if(){} ……..
我想要做这样的事情 switch (this.dealer) { case 1-4: // Do something. break; case 5-8: // Do something. break; case 9-11: // Do something. break; default: break; } 什么是正确的语法呢? 在JavaScript中可能吗? 所以this.dealer是一个整数,如果它在这些值之间,做些事情。
我想我会失明,因为我无法弄清楚这个代码中的语法错误: if( cell == nil ) { titledCell = [ [ [ TitledCell alloc ] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier ] autorelease ]; switch( cellNumber ) { case 1: NSString *viewDataKey = @"Name"; etc… 当我尝试编译它时,我在最后一行的'*'标记之前得到一个错误:语法错误 。 对不起,这样一个基本的问题,但我错过了什么?
我在java中发现很多书,switch语句比if语句更快。 但我没有findantwhere说为什么开关比如果更快 。 例 我有一个情况,我必须从两个select任何一个项目我可以使用以下任一方式 switch(item){ case BREAD: //eat Bread break; default: //leave the restaurant } 或使用if语句如下所示 if(item== BREAD){ //eat Bread }else{ //leave the restaurant } 考虑项目和BREAD是恒定的int值 在上面的例子中,行动更快,为什么?
我相信我已经看到了这个地方,但我不记得它是不是一种不同的语言,或者我只是不记得语法。 有没有一种方法可以通过多个案例陈述而没有陈述案例价值:反复? 我知道这个作品: switch (value) { case 1: case 2: case 3: //do some stuff break; case 4: case 5: case 6: //do some different stuff break; default: //default stuff break; } 但我想要做这样的事情: switch (value) { case 1,2,3: //Do Something break; case 4,5,6: //Do Something break; default: //Do the Default break; } 这是我从另一种语言想到的语法,还是我错过了什么? 谢谢!
所以我想用这样的switch语句: switch (scrollLeft) { case (<1000): //do stuff break; case (>1000 && <2000): //do stuff break; } 现在我知道这些语句( <1000 )或( >1000 && <2000 )中的任何一个都不起作用(显然是出于不同的原因)。 我所要求的是最有效的方法。 我讨厌使用30条if语句,所以我宁愿使用switch语法。 有什么我能做的吗?
当我尝试编译时,我得到这个错误: 1> —— Build开始:Project:snake,configuration:Debug Win32 —— 1> exercise.cpp 1> c:\ users \ robin \ documents \ visual studio 2010 \ projects \ snake \ snake \ exercise.cpp(13):error C2059:syntax error:'> =' 1> c:\ users \ robin \ documents \ visual studio 2010 \ projects \ snake \ snake \ exercise.cpp(16):error C2059:syntax error:'> =' 1> c:\ users […]
我试图创build一个switch语句,但我似乎无法使用得到评估的expression式(而不是一个string/整数)。 我可以很容易地做到这一点,如果发言,但情况应该希望更快。 我正在尝试以下 function reward(amount) { var $reward = $("#reward"); switch (amount) { case (amount >= 7500 && amount < 10000): $reward.text("Play Station 3"); break; case (amount >= 10000 && amount < 15000): $reward.text("XBOX 360"); break; case (amount >= 15000): $reward.text("iMac"); break; default: $reward.text("No reward"); break; } } 我错过了一些明显的东西,或者这是不可能的? Google在这种情况下并不友善。 任何帮助/指针赞赏 中号
这个问题主要针对C / C ++,但我猜其他语言也是相关的。 我不明白为什么开关/大小写仍然被用来代替if / else if。 在我看来,就像使用goto's一样,结果是相同的混乱的代码,而同样的结果可以通过if / else if以更有组织的方式实现。 不过,我经常看到这些街区。 find它们的一个常见的地方是在一个消息循环(WndProc …)附近,而当它们引发最严重的破坏时,这些地方就是这样:variables在整个块中共享,即使不是主动的(也不可能是在里面初始化)。 必须特别注意不要突破,等等… 就个人而言,我避免使用它们,我想知道我错过了什么吗? 他们比if / else更有效率吗? 他们是否inheritance了传统?