草庐IT

language-switching

全部标签

c# - 从 switch block 中跳出 foreach 循环

如何在switchblock中跳出foreach循环?通常,您使用break,但如果您在switchblock中使用break,它只会让您离开switchblock,foreach循环将继续执行:foreach(varvinmyCollection){switch(v.id){case1:if(true){break;}break;case2;break}}当我需要在switchblock内跳出foreach时,我目前正在做的是设置一个bool值在循环外为true并在每次输入foreach时和进入switchblock之前检查此bool的值。像这样:boolexitLoop;forea

带/不带大括号的 C# Switch 语句....有什么区别?

C#是否始终允许您在case:语句之间的switch()语句中省略大括号?像javascript程序员经常做的那样,省略它们有什么影响?例子:switch(x){caseOneWay:{// 最佳答案 大括号不是必需的,但它们可能会派上用场,以引入新的声明空间。据我所知,这种行为自C#1.0以来就没有改变。省略它们的效果是所有在switch语句内某处声明的变量在所有case分支中从它们的声明点可见。另请参阅EricLippert的示例(帖子中的案例3):Fourswitchoddities埃里克的例子:switch(x){caseO

c# - 如何使 C# Switch 语句使用 IgnoreCase

如果我有一个switch-case语句,其中switch中的对象是字符串,是否可以进行ignoreCase比较?我有例如:strings="house";switch(s){case"houSe":s="window";}s会得到值“window”吗?如何覆盖switch-case语句,以便它使用ignoreCase比较字符串? 最佳答案 一个更简单的方法是在进入switch语句之前将字符串小写,并降低大小写。实际上,从纯粹的极端纳秒级性能的角度来看,upper要好一些,但看起来不太自然。例如:strings="house";swi

c# - 大 Switch 语句 : Bad OOP?

我一直认为大型switch语句是糟糕的OOP设计的症状。过去,我读过讨论这个主题的文章,它们提供了基于OOP的替代方法,通常基于多态性来实例化正确的对象来处理这种情况。我现在的情况是有一个基于来自TCP套接字的数据流的巨大switch语句,其中协议(protocol)基本上由换行符终止的命令组成,后跟数据行,然后是结束标记。该命令可以是100个不同命令中的一个,所以我想找到一种方法将这个庞大的switch语句减少到更易于管理的状态。我进行了一些谷歌搜索以找到我记得的解决方案,但遗憾的是,如今谷歌已成为许多查询的不相关结果的荒地。是否有解决此类问题的模式?关于可能的实现有什么建议吗?我的

c# - lock(new object()) -- cargo 崇拜或一些疯狂的 "language special case"?

我正在审查一位顾问编写的一些代码,虽然已经出现了数十个危险信号,但我无法理解以下代码片段:privatevoidfoo(){if(InvokeRequired){lock(newobject()){if(m_bar!=null)Invoke(newfooDelegate(foo),newobject[]{});}}else{if(OnBazChanged!=null)OnBazChanged();}}lock(newobject())在这里做什么?应该没有任何影响,因为它总是锁定另一个对象,但这种锁定在整个代码中都是持久的,即使在非复制和粘贴的部分也是如此。这是C#语言中的一些特殊情况

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

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:C#-Isthereabetteralternativethanthisto‘switchontype’?如果您想切换一种对象,最好的方法是什么?代码片段privateintGetNodeType(NodeDTOnode){switch(node.GetType()){casetypeof(CasusNodeDTO):return1;casetypeof(BucketNodeDTO):return3;casetypeof(BranchNodeDTO):return0;casetypeof(LeafNodeDTO

c# - 在 C# 中使用 if/else 和 switch-case 之间有什么显着区别吗?

在C#中使用switch语句与使用if/else语句有什么好处/坏处。除了代码的外观之外,我无法想象会有那么大的不同。是否有任何原因导致生成的IL或相关的运行时性能会截然不同?相关:Whatisquicker,switchonstringorelseifontype? 最佳答案 SWITCH语句仅在调试或兼容模式下生成与IF相同的程序集。在发布时,它将被编译成跳转表(通过MSIL'switch'语句)-这是O(1)。C#(与许多其他语言不同)也允许打开字符串常量-这有点不同。为任意长度的字符串构建跳转表显然是不切实际的,因此大多数情

c# - 有比 'switch on type' 更好的选择吗?

因为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语句(模式匹配

c# - "else if"比 "switch() 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:..

c# - C# 中的 Switch 语句失败?

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