【问题标题】:Best use for handling multiple IF statements处理多个 IF 语句的最佳用途
【发布时间】:2012-03-18 11:03:18
【问题描述】:

我想知道解决此问题的最佳方法:在我的场景中,用户选择 1 到 5 个选项,根据他们的选项,它必须在三个选项之间随机选择。

假设用户选择了选项 2 和 3,我可以编写一个 IF 语句,说明当它被选中时执行此操作等,问题是我不想为所有可能的组合编写 IF 语句。

只是想知道最简单的方法是什么?

我想我可以换一个 Switch,但同样需要对每个单独的组合进行编程。

谢谢。

编辑:一个小例子的代码

bool Option1 = false;
bool Option2 = false;
bool Option3 = false;

if (Option1 == true && Option2 == false && Option3 == false)
{
//Do Somthing
}
else if (Option1 == true && Option2 == true && Option3 == false)
{
//Do Somthing
}
else if (Option1 == true && Option2 == false && Option3 == true )
{
//Do Somthing
}

等等..

【问题讨论】:

  • 您能否发布您的代码示例,以便我们知道发生了什么?
  • @AshleyDavies 添加了一些
  • 在这种情况下,我更喜欢用更易于理解的语言编写代码。 Option1 Option2 对我来说永远不是变量名的选择,否则我将创建一些变量,这些变量的名称解释了它们的意图。如果您可以提供有关您使用的变量的更多信息。我可以建议你写最好的代码。
  • 你应该看看下面的Answer

标签: c# if-statement


【解决方案1】:

尝试编写代码,使其与您尝试建模的逻辑紧密相关。为option1 所做的选择是否会改变其他选项的含义,还是将它们都视为一个组?

您可能会发现引入其他可以在分支中使用的标志(例如exactlyTwoOptionsSelected)很有用。

顺便说一句,写if (option1 && option2)if (!option1 || option2) 等会比if (option1 == true && option2 == true)if(option1 == false || option2 == true) 更容易使用。

【讨论】:

    【解决方案2】:

    这取决于"// Do Somthing" 实际做了什么。

    如果选项之间存在一些代码重复,则将其放入函数中并调用它。或者将重复的代码分成独立的if ( Option1 ) { ... } 块。

    如您所述,您可以将有效组合转换为枚举(5 位为 32 个值)并将其放入 switch 语句中。

    【讨论】:

    • 我忘记了 Enums.. 自从我编程以来已经有一段时间了。谢谢汤姆,这会成功的'
    【解决方案3】:

    我会选择嵌套的 if。如果它变得太难读,你总是可以将它们分组到函数中:

    if( option1 )
    {
       if ( option2 )
       {
          if ( option3 )
          {
             doThing2();
          }
          else
          {
             doThing1(); // no more alternatives
          }
       }
       else
       {
          doThing1(); // need to do the same as above
       }
    }
    else
    {
      ... more or less the same as above
    }
    

    我认为这就是它的本意。有了漂亮的编辑器,它就变得容易阅读了……

    MNario

    【讨论】:

      【解决方案4】:
              Console.WriteLine("Enter first number: ");
              int first = int.Parse(Console.ReadLine());
              Console.WriteLine("Enter second number: ");
              int second = int.Parse(Console.ReadLine());
              if (first % second == 0) 
              {
                  Console.WriteLine("Number 1 is multiple of number 2.");
              }
              else if (second % first == 0)
              {
                  Console.WriteLine("Number 2 is multiple of number 1.");
              }
              else
              {
                  Console.WriteLine("Numbers are not multiples.");
              }
              Console.ReadKey();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-21
        • 1970-01-01
        • 1970-01-01
        • 2016-07-11
        • 2021-10-31
        • 1970-01-01
        • 1970-01-01
        • 2017-06-06
        相关资源
        最近更新 更多