最适合处理多个IF语句

时间:2012-03-18 11:03:19

标签: c# if-statement

我想知道最好的方法:在我的场景中,用户可以选择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
}

等等..

4 个答案:

答案 0 :(得分:4)

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

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

正如您所提到的,您可以将有效组合转换为枚举(5位是32个值)并将其放在switch语句中。

答案 1 :(得分:4)

我会去嵌套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
}

我认为这就是它的意图。使用优秀的编辑器,它变得易于阅读......

HTH

MNario

答案 2 :(得分:3)

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

您可能会发现引入其他标志(例如exactlyTwoOptionsSelected)非常有用,然后您可以在分支中使用它们。

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

答案 3 :(得分:0)

        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();