0

我有这个 if..else 的长循环。任何人都可以帮助我知道“switch case”是否更适合这个或“if..else”?

if (meals == null)
{
    bfast.Hide();
    lunch_rb.Hide();
    dinner_rb.Hide();
}
else if (meals != null)
{
    if (breakfast != null && lunch == null && dinner == null)
    {
        lunch_rb.Hide();
        dinner_rb.Hide();
    }
    if (breakfast == null && lunch != null && dinner == null)
    {
        bfast.Hide();
        dinner_rb.Hide();
    }
    if (breakfast == null && lunch == null && dinner != null)
    {
        bfast.Hide();
        lunch_rb.Hide();
    }
    if (breakfast != null && lunch != null && dinner == null)
    {
        dinner_rb.Hide();
    }
    if (breakfast != null && lunch == null && dinner != null)
    {
        lunch_rb.Hide();
    }
    if (lunch != null && breakfast == null && dinner != null)
    {
        bfast.Hide();
    }

我正在为 Windows CE 5.0 开发一个应用程序(如果有帮助的话)

4

6 回答 6

10

我认为在这种情况下更好的解决方案是:

if (breakfast == null)
  bfast.Hide();
if (lunch == null)
  lunch_rb.Hide();
if (dinner == null)
  dinner_rb.Hide();
于 2012-09-29T08:00:08.010 回答
6

您可以尝试这样的事情,因为您对多个变量有条件,您需要制作表达式以将其传递给 switch,因此使用下面给出的 if 可能会使它变得简单。

if (breakfast == null)
      bfast.Hide();

if (lunch == null)
      lunch_rb.Hide();

if (dinner == null)
      dinner_rb.Hide();
于 2012-09-29T08:01:15.983 回答
1

对于这种特殊情况 if-else 更好,因为您有复杂的条件,我相信这是 switch-case 无法做到的。

于 2012-09-29T07:58:52.970 回答
0

对于这个问题,我认为if...else已经足够好了。switch...case无法应对如此复杂的情况。随意使用它。

于 2012-09-29T08:02:21.013 回答
0

Switch case 总是比 if...else if 更好,因为它需要更少的输入,并且您的代码将更容易阅读和理解。当我在考试中忘记 switch 的样式时,我自己只是使用“else if”!

于 2012-09-29T08:10:12.780 回答
0

ifswitch语句之间的性能水平没有太大区别。无论如何,您的代码是一团糟。考虑 Pigueiras 的回答。就像是

bfast.Hide();
lunch_rb.Hide();
dinner_rb.Hide();
if (meals != null) {
  if (breakfast != null)
    bfast.Show();
  if (lunch =! null)
    lunch_rb.Show();
  if (dinner =! null)
    dinner_rb.Show();
}
于 2012-09-29T08:23:47.863 回答