草庐IT

lv_switch

全部标签

swift - Swift 详尽的 Switch 语句的 Noop

Swift需要详尽的switch语句,并且每个case都有可执行代码。'case'labelina'switch'shouldhaveatleastoneexecutablestatement有没有人想出一个好方法来处理您实际上不想做任何事情的情况?我可以在其中放一个println(),但感觉很脏。 最佳答案 根据thebook,你需要在那里使用break:Thescopeofeachcasecan’tbeempty.Asaresult,youmustincludeatleastonestatementfollowingthecol

swift - 小于或大于 Swift switch 语句

我熟悉Swift中的switch语句,但想知道如何用switch替换这段代码:ifsomeVar0{//etc} 最佳答案 这是一种方法。假设someVar是一个Int或其他Comparable,您可以选择将操作数分配给一个新变量。这使您可以使用where关键字来限制范围:varsomeVar=3switchsomeVar{caseletxwherex0:print("xis\(x)")default:print("thisisimpossible")}这可以稍微简化一下:switchsomeVar{case_wheresomeVa

c# - 如何在类型上使用 switch-case?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Isthereabetteralternativethanthisto'switchontype'?我需要遍历我的类的所有属性并检查它的int类型是否需要做某事,如果它的字符串..然后做某事。我需要它使用开关盒。在这里,我按以下方式使用switch,但它需要一些常量。看下面的代码:publicstaticboolValidateProperties(objecto){if(o!=null){varsourceType=o.GetType();varproperties=sourceType.GetPropert

c# - switch 语句中的 switch 语句?

我必须评估很多条件。就我而言,我必须做这样的事情:switch(id){case5://switchsomeothercasesherecase6://setsomevalue...}在案例5中使用另一个开关是否是好的做法?如果不是,那什么更好?有if语句吗? 最佳答案 我会调用一个特定于案例5的函数,然后在该函数中包含切换案例。例如:switch(id){case5:FunctionFiveSpecific(id);case6://setsomevalue...}案例5的具体功能:privatevoidFunctionFiveSp

c# - 如何对基于枚举的 switch 语句的默认情况进行单元测试

我在工厂中有一个switch语句,它根据传入的枚举值返回一个命令。类似于:publicICommandCreate(EnumTypeenumType){switch(enumType){case(enumType.Val1):returnnewSomeCommand();case(enumType.Val2):returnnewSomeCommand();case(enumType.Val3):returnnewSomeCommand();default:thrownewArgumentOutOfRangeException("UnknownenumType"+enumType);}}

c# - 如何在子类的工厂方法中避免 switch-case

假设我们有一组类(卡片,为了它),我们需要根据一些标识符来实例化它们。工厂方法看起来像这样:publicCardGetCard(intcardNumber){switch(cardNumber){case13:returnnewKing();case12:returnnewQueen();case11:returnnewJack();}//...}我想要的是避免这个开关。为什么?也许我想在功能中重用这个比较。我想出的是这样的:privateDictionarycardTypes={{13,typeof(King)},{12,typeof(Queen)},{11,typeof(Jack)

c# - 为什么 switch for enum 接受隐式转换为 0 但不接受任何其他整数?

有一个:enumSomeEnum{A=0,B=1,C=2}现在编译器允许我写:SomeEnumx=SomeEnum.A;switch(x){case0://0被认为是SomeItems.A。但我不会写:SomeEnumx=SomeEnum.A;switch(x){case0:break;case1://为什么只有0存在隐式转换? 最佳答案 来自ECMA-334(C#LanguageSpecification)13.1.3ImplicitenumerationconversionsAnimplicitenumerationconver

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的值将是这些值之一。不