c# – 替换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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


c语言数组越界会怎么样
c语言指针怎么等于数组
c语言数组怎么存入文字
c语言中怎么显示数组
c语言数组元素怎么选
c语言数组怎么累加
c语言数组符号怎么输入
c语言怎么用长数组
c语言数组函数怎么输入
c语言数组怎么去掉差异
c语言怎么求解数组
c语言数组怎么用变量
c语言怎么申明数组
c语言怎么控制数组
c语言怎么计算数组长度
c语言数组怎么插星号
c语言数组怎么加长度
c语言中怎么输出数组
c语言怎么记住数组边界
c语言数组怎么输入符号