草庐IT

Switch-case

全部标签

c# - 使用 Action 字典而不是 switch 语句

我正在审查我的一些旧代码(有一些空闲时间),我注意到一个相当冗长的switch语句。由于获得了新知识,我将其重构为以下形式:privateDictionarycreateView{get{returnnewDictionary(){{"Standard",CreateStudySummaryView},{"ByGroup",CreateStudySummaryByGroupView},{"ByGroup/Time",CreateViewGroupByHour}};}}您认为这是一种良好的做法,还是仅仅是一种多余且不必要的情况?我热衷于确保我学习的新技术不是为了聪明而聪明,而是它们实际上

c# - "switch"语句评估线程安全吗?

考虑以下示例代码:classMyClass{publiclongx;publicvoidDoWork(){switch(x){case0xFF00000000L://dowhatever...break;case0xFFL://dowhatever...break;default://notifythatsomethinggoingwrongthrownewException();}}}忘记代码片段的无用性吧:我怀疑的是switch语句的行为。假设x字段只能有两个值:0xFF00000000L或0xFFL。上面的开关不应该属于“默认”选项。现在假设一个线程正在执行“x”等于0xFFL的

c# - 为什么 "Not all code paths return a value"带有 switch 语句和枚举?

我有以下代码:publicintMethod(MyEnummyEnum){switch(myEnum){caseMyEnum.Value1:return1;caseMyEnum.Value2:return2;caseMyEnum.Value3:return3;}}publicenumMyEnum{Value1,Value2,Value3}我收到错误:“并非所有代码路径都返回一个值”。我不明白switch语句怎么可能永远不会跳转到指定的情况之一。enum能否以某种方式成为null? 最佳答案 毫无疑问myEnum的值将是这些值之一。不

c# - 将 string.Contains() 与 switch() 一起使用

我正在做一个我使用的C#应用程序if((message.Contains("test"))){Console.WriteLine("yes");}elseif((message.Contains("test2"))){Console.WriteLine("yesfortest2");}有什么方法可以改变switch()的if()语句吗? 最佳答案 更正[Mr.C]的回答。随着VS2017RC的发布及其对C#7的支持,它的工作方式如下:switch(message){casestringawhena.Contains("test2")

c# 7.0 : switch on System. 类型

没有现有问题可以回答这个问题。在c#7中,我可以直接在System.Type上切换吗?当我尝试时:switch(Type){casetypeof(int):break;}它告诉我typeof(int)需要是一个常量表达式。是否有一些语法糖可以让我避免casenameof(int):并直接比较类型是否相等?nameof(T)在case语句中并不完全好,因为命名空间。因此,尽管名称冲突可能不适用于int,但它将适用于其他比较。换句话说,我正在尝试比这更类型安全:switch(Type.Name){casenameof(Int32):casenameof(Decimal):this.valu

c# - 您如何使该switch语句尽可能快?

2009-12-04更新:有关此处发布的许多建议的概要分析结果,请参见下文!问题考虑以下非常无害,非常简单的方法,该方法使用switch语句返回定义的枚举值:publicstaticMarketDataExchangeGetMarketDataExchange(stringActivCode){if(ActivCode==null)returnMarketDataExchange.NONE;switch(ActivCode){case"":returnMarketDataExchange.NBBO;case"A":returnMarketDataExchange.AMEX;case"B

ASIC-WORLD Verilog(8)if-else语句和case语句

 写在前面        在自己准备写一些简单的verilog教程之前,参考了许多资料----Asic-World网站的这套verilog教程即是其一。这套教程写得极好,奈何没有中文,在下只好斗胆翻译过来(加了自己的理解)分享给大家。    这是网站原文:VerilogTutorial        这是系列导航:Verilog教程系列文章导航条件语句之if-else    和C语言等程序语言类似,Verilog语法中的if-else语句可以根据条件的真假来选择执行不同分支的语句。如果每个分支需要执行的语句不止一条,则需要将这些语句都包含在begin-end语句之中。if语句    不带有分支

别乱用 FULL_CASE 和 PARALLEL_CASE

文章目录写在前面1、FULL_CASE的用法1.1、使用default语句1.2、不使用default语句 1.3、使用综合属性 FULL_CASE1.4、综合前后电路仿真不一致1.5、陷阱2、PARALLEL_CASE的用法3、总结写在前面        case语句可以说是我们在FPGA开发中使用频率非常高的一条语句。同时,Verilog还提供了语句casex和casez供我们使用。在使用case语句的时候,各类综合工具都提供了以下类似的两句综合语句供我们使用(以Xilinx为例):FULL_CASE 和 PARALLEL_CASE    这两条综合属性可以帮助我们在一定程度上减少资源,但

c# - 在 Visual Studio : Test-case objects missing 中运行单元测试时出错

使用resharper从visualstudio运行单元测试时出现以下错误:缺少以下元素的测试用例对象:...重建项目并重试在单元测试方法旁边的工具提示中,它说:Inconclusive:Testnotrun并且我认为它曾说过Unittestskipped。Resharper显示灰色眼睛图标。visualstudio的TestExplorer也有一个奇怪的问题。它不会显示我所有的单元测试。事实上,它缺少我的200多个单元测试。它们只是不出现在测试资源管理器窗口中。我确实有一些测试出现并且运行良好。我已经尝试过的事情:重启我的机器、清理、重建、更改所有依赖项目以使用相同的.netFram

c# - 为什么 if 语句有效但 switch 语句无效

我正在尝试使用字符串的字符索引和使用this的枚举创建一个switch语句包装器从描述中获取所选枚举的值。它几乎允许您将字符串存储到枚举值。这是我的if语句:if(msgComingFromFoo[1]==Convert.ToChar(Message.Code.FOO_TRIGGER_SIGNAL.EnumDescriptionToString())){//foo}这是我的switch语句:switch(msgComingFromFoo[1]){caseConvert.ToChar(Message.Code.FOO_TRIGGER_SIGNAL.EnumDescriptionToStr