这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:C#-Isthereabetteralternativethanthisto‘switchontype’?如果您想切换一种对象,最好的方法是什么?代码片段privateintGetNodeType(NodeDTOnode){switch(node.GetType()){casetypeof(CasusNodeDTO):return1;casetypeof(BucketNodeDTO):return3;casetypeof(BranchNodeDTO):return0;casetypeof(LeafNodeDTO
在C#中使用switch语句与使用if/else语句有什么好处/坏处。除了代码的外观之外,我无法想象会有那么大的不同。是否有任何原因导致生成的IL或相关的运行时性能会截然不同?相关:Whatisquicker,switchonstringorelseifontype? 最佳答案 SWITCH语句仅在调试或兼容模式下生成与IF相同的程序集。在发布时,它将被编译成跳转表(通过MSIL'switch'语句)-这是O(1)。C#(与许多其他语言不同)也允许打开字符串常量-这有点不同。为任意长度的字符串构建跳转表显然是不切实际的,因此大多数情
因为C#无法在类型上切换(据我所知,这并不是作为一种特殊情况添加的,因为is关系意味着不止一个不同的case可能适用),有没有比这更好的方法来模拟打开类型?voidFoo(objecto){if(oisA){((A)o).Hop();}elseif(oisB){((B)o).Skip();}else{thrownewArgumentException("Unexpectedtype:"+o.GetType());}} 最佳答案 WithC#7,随VisualStudio2017(版本15.*)一起提供,您可以在case语句(模式匹配
这个问题在这里已经有了答案:Isthereanysignificantdifferencebetweenusingif/elseandswitch-caseinC#?(21个回答)关闭2年前。我以前是Pascal人员,目前正在学习C#。我的问题如下:下面的代码是否比切换更快?inta=5;if(a==1){....}elseif(a==2){....}elseif(a==3){....}elseif(a==4){....}else....还有开关:inta=5;switch(a){case1:...break;case2:...break;case3:...break;case4:..
Switch语句漏掉是我个人喜欢switch与if/elseif结构的主要原因之一。这里有一个例子:staticstringNumberToWords(intnumber){string[]numbers=newstring[]{"","one","two","three","four","five","six","seven","eight","nine"};string[]tens=newstring[]{"","","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};string[]teen
如何使用JavaScript在switchcase语句中使用范围?因此,我不想为每一种可能性编写代码,而是想将它们分组在范围内,例如:switch(myInterval){case0-2://doStuffWithFirstRange();break;case3-6://doStuffWithSecondRange();break;case6-7://doStuffWithThirdRange();break;default://doStuffWithAllOthers();} 最佳答案 您至少有四种选择:1。列出每个案例作为sho
我正在尝试创建一个switch语句,但我似乎无法使用被评估的表达式(而不是一组字符串/整数)。我可以使用if语句轻松地做到这一点,但case应该会更快。我正在尝试以下操作functionreward(amount){var$reward=$("#reward");switch(amount){case(amount>=7500&&amount=10000&&amount=15000):$reward.text("iMac");break;default:$reward.text("Noreward");break;}}我是不是遗漏了一些明显的东西,或者这是不可能的?在这种情况下,谷歌并
如果我将对象传递给case语句,并且存在未定义的情况,我可以处理这种情况吗?如果是这样,那又如何?如果不可能,那么处理switch未定义案例的最佳实践是什么? 最佳答案 为undefined添加一个case。caseundefined://codebreak;或者,如果所有其他选项都已用尽,请使用默认。default://codebreak;注意:为避免错误,提供给switch的变量必须声明,但可以未定义值(value)。引用此fiddle并阅读更多关于definedandundefinedvariablesinJavaScript
我正在我的计算机中使用ServiceWorkerAPI,因此我可以了解如何在现实世界的应用程序中从中受益。我遇到了一个奇怪的情况,我注册了一个拦截fetch事件的serviceworker,这样它就可以在向源发送请求之前检查其缓存中的请求内容。问题是这段代码有一个错误,阻止了函数发出请求,所以我的页面是空白的;什么也没有发生。由于serviceworker已经注册,我第二次加载页面时它会拦截第一个请求(加载HTML的请求)。因为我有这个错误,那个fetch事件失败了,它从不请求HTML,我看到它是一个空白页面。在这种情况下,我知道删除坏服务worker脚本的唯一方法是通过chrome:
我有以下代码,但收到错误“重复声明query_url”。switch(condition){case'complex':constquery_url=`something`;break;default:constquery_url=`something`;break;}我知道query_url被声明了两次,这是不对的。但我不知道如何解决这个问题。有人可以帮助解决这项工作的正确方法吗? 最佳答案 尝试将案例包装成block:switch(condition){case'complex':{constquery_url=`somethi