当前位置: 首页 > 编程语言 > C#

分享_11

时间:2023-04-10 21:55:38 C#

usingelseC#withmultipleifstatementsUsingelseC#withmultipleifstatements有没有办法快速检查以下逻辑?我正在使用C#。if(a){}if(b){}if(c){}否则以上都不是//...?ifaboveconditionsarefalse{}这与使用if-else不同,因为a、b和c可以同时为真。所以我不能那样堆叠它们。我想在不写if(!a&&!b&&!c)的情况下检查其他a、b和c是否为假。这是因为当if条件变得更复杂时,代码会变得非常混乱。它需要大量的代码重写。是否可以?好吧,它不是很“干净”,但我会做boolnoneAreTrue=true;如果(a){noneAreTrue=false;}if(b){noneAreTrue=false;}if(c){noneAreTrue=false;}if(noneAreTrue){//如果上述所有条件都为假,则执行}此外,如果您的条件非常大,我建议使用RobertC.Martin的书“CleanCode”中的规则G28(封装条件)。它非常冗长,但在某些情况下更容易阅读:{}}privateboolSomeComplexLogic(){返回内容;}privateboolEvenMoreComplexLogic(){返回moreStuff;}privateboolEvenMoreComplexLogic(){返回evenMoreStuff;}privateboolNoComplexLogicApply(){returnSomeComplexLogic()&&EvenMoreComplexLogic()&&EvenMoreComplexLogic();}如何结合策略和规范的概念varstrategies=_availableStrategies.All(x=>x.IsSatisfiedBy(value));foreach(varstrategyinstrategies){strategy.Execute(context);}if(!strategies.Any()){//运行一个不同的策略}我不会将一些复杂的条件包装在一个你只会调用一次或两次的方法中,而是保留一个变量。这比使用其他答案建议的一些标记的布尔值更具可读性。一个人为的例子,boolisBlue=sky.Color==Colors.Blue;boolcontainsOxygen=sky.Atoms.Contains("oxygen")&&sky.Bonds.Type==Bond.Double;boolcanRain=sky.Abilities.Contains("下雨");if(isBlue){}if(containsOxygen){}if(canRain){}if(!isBlue&&!containsOxygen&&!canRain){}现在我们已经将复杂的条件抽象成可以阅读英语的内容!以上就是C#学习教程:使用elseC#多if语句,分享全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络合集,不代表任何内容,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: