c# – 替换If Else唯一条件嵌套语句
发布时间:2020-12-15 08:40:42 所属栏目:百科 来源:网络整理
导读:如果我们具有相同的条件但标准不同,则切换case语句可以替换嵌套的if语句.但是,如果那些嵌套的if语句都具有不同且独特的条件,那么什么是好的方法呢?我是否有任何替代选项来替换彼此嵌套的十几个if else语句? 示例代码: 注意:我知道这是非常难以理解的 –
如果我们具有相同的条件但标准不同,则切换case语句可以替换嵌套的if语句.但是,如果那些嵌套的if语句都具有不同且独特的条件,那么什么是好的方法呢?我是否有任何替代选项来替换彼此嵌套的十几个if else语句?
示例代码: >注意:我知道这是非常难以理解的 – 这就是重点. … if (condition) { // do A } else { if (condition) { // do B if (condition) { if (condition) { if (condition) { // do C if (condition) { // do D if (condition) { // do E } else { if (condition) { // do F } } } } if (condition) { // do G if (condition) { // do H if (condition) { // do I } else { // do J } } } } } } 解决方法
当我看到代码时,我不得不检查这是Stackoverflow而不是DailyWTF !!
解决方案是更改体系结构并使用接口和多态来绕过所有条件.然而,这可能是一项巨大的工作,并且超出了可接受答案的范围,因此我将推荐另一种方法,您可以使用具有独特条件的Switch语句: [Flags] public enum FilterFlagEnum { None = 0,Condition1 = 1,Condition2 = 2,Condition3 = 4,Condition4 = 8,Condition5 = 16,Condition6 = 32,Condition7 = 64 }; public void foo(FilterFlagEnum filterFlags = 0) { if ((filterFlags & FilterFlagEnum.Condition1) == FilterFlagEnum.Condition1) { //do this } if ((filterFlags & FilterFlagEnum.Condition2) == FilterFlagEnum.Condition2) { //do this } } foo(FilterFlagEnum.Condition1 | FilterFlagEnum.Condition2); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- c# – 无法在机器密钥设置为SHA1时验证数据错误
- 42501:在Postgresql中查询时不充分的特权错误
- ruby – let()值在使用before(:all)时跨越示例缓
- swift语言的网络请求不通过的状态页面
- ruby-on-rails – 未允许的参数错误
- dojo.declare/dojo.provide/dojo.require:JavaS
- ruby-on-rails – 使用`class_attribute`和`Hash
- c# – 使用具有继承的多个基页是正确的选择吗?
- 未定义的方法`use_transactional_tests =’表示#
- Cocos2dx-3.x 学习笔记一:屏幕分辨率及适配问题
热点阅读