c# – 替换If Else唯一条件嵌套语句

前端之家收集整理的这篇文章主要介绍了c# – 替换If Else唯一条件嵌套语句前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我们具有相同的条件但标准不同,则切换case语句可以替换嵌套的if语句.但是,如果那些嵌套的if语句都具有不同且独特的条件,那么什么是好的方法呢?我是否有任何替代选项来替换彼此嵌套的十几个if else语句?

示例代码

>注意:我知道这是非常难以理解的 – 这就是重点.
>注意:所有条件都是唯一的.

  1. if (condition) {
  2. // do A
  3. } else {
  4. if (condition) {
  5. // do B
  6. if (condition) {
  7. if (condition) {
  8. if (condition) {
  9. // do C
  10. if (condition) {
  11. // do D
  12. if (condition) {
  13. // do E
  14. } else {
  15. if (condition) {
  16. // do F
  17. }
  18. }
  19. }
  20. }
  21.  
  22. if (condition) {
  23. // do G
  24. if (condition) {
  25. // do H
  26. if (condition) {
  27. // do I
  28. } else {
  29. // do J
  30. }
  31. }
  32. }
  33. }
  34. }
  35. }
@H_404_12@@R_404_323@
当我看到代码时,我不得不检查这是Stackoverflow而不是DailyWTF !!

解决方案是更改体系结构并使用接口和多态来绕过所有条件.然而,这可能是一项巨大的工作,并且超出了可接受答案的范围,因此我将推荐另一种方法,您可以使用具有独特条件的Switch语句:

  1. [Flags]
  2. public enum FilterFlagEnum
  3. {
  4. None = 0,Condition1 = 1,Condition2 = 2,Condition3 = 4,Condition4 = 8,Condition5 = 16,Condition6 = 32,Condition7 = 64
  5. };
  6.  
  7.  
  8. public void foo(FilterFlagEnum filterFlags = 0)
  9. {
  10. if ((filterFlags & FilterFlagEnum.Condition1) == FilterFlagEnum.Condition1)
  11. {
  12. //do this
  13. }
  14. if ((filterFlags & FilterFlagEnum.Condition2) == FilterFlagEnum.Condition2)
  15. {
  16. //do this
  17. }
  18. }
  19.  
  20.  
  21. foo(FilterFlagEnum.Condition1 | FilterFlagEnum.Condition2);

猜你在找的C#相关文章