【问题标题】:Optimizing nested If statements and conditions优化嵌套 If 语句和条件
【发布时间】:2017-12-24 07:27:47
【问题描述】:

假设我有三个条件,用布尔变量表示。如何使以下代码块更简单?

bool condition1, condition2, condition3; //assuming they already have values

if (condition1 && condition2)
{
    if (condition3)
    {
        //Few lines of code here
    }
}
else
{
    //Same few lines of code above here
}

除了将“代码行”放在方法中之外,还有更好/更简洁的方法来简化这一点吗?内部if可以去掉吗?谢谢。

【问题讨论】:

  • 如果外部有行(内部没有)
  • @EpicKip 如果您在if (condition3) 检查之外谈论,那么没有。 if 是一个人。 :)
  • 你不能先if(con1 && con2 && con3) 然后else if(!con1 && !con2)吗?
  • @EpicKip 会试一试。等一会儿吧。谢谢。
  • 如果效果不佳,请将其发布为答案

标签: c# if-statement boolean


【解决方案1】:

你可以这样做:

if (!(condition1 && condition2) || (condition1 && condition2 && condition3))
{
     //Few lines of code here
}

或将condition1 && condition2 等同于if 语句之前以使代码更简单:

bool c12 = condition1 && condition2;

if (!c12 || (c12 && condition3))
{
     //Few lines of code here
}

如果condition1condition2 为真(但不是条件3),您需要做额外的事情:

bool c12 = condition1 && condition2;

if (!c12 || (c12 && condition3))
{
     if(c12 && !condition3)
     {
         // Do extra stuff
     }

     //Few lines of code here
}

【讨论】:

  • 这行得通。不过,不知道谁投了反对票。无论如何,谢谢。
【解决方案2】:

我认为这是相同且更小的代码:

if (condition1 && condition2 && condition3)
{
        //Few lines of code here
}
else
{
    //Same few lines of code above here
}

【讨论】:

  • 原始else 的命中与condition3 的值无关
猜你喜欢
  • 2010-09-07
  • 2019-08-23
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 2018-10-26
  • 2021-01-10
相关资源
最近更新 更多