繁体   English   中英

切换大小写或其他

[英]Switch case or if else

我有一个漫长的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的应用程序(如果有帮助)

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

if (breakfast == null)
  bfast.Hide();
if (lunch == null)
  lunch_rb.Hide();
if (dinner == null)
  dinner_rb.Hide();

您可以尝试这样的操作,因为您对多个变量有条件,您将需要创建表达式以将其传递给开关,因此使用if如下所示可能会使其变得简单。

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

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

if (dinner == null)
      dinner_rb.Hide();

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM