在这种情况下,更好的替代许多嵌套的if语句?

Sko*_*eet 1 c# if-statement nested-if

if (task1 != null)
    //Do something with task1
else
{
     if (task2 != null)
         //Do something with task2
     else
     {
         if (task3 != null)
             //Do something with task3
         else
         {
             if (task4 != null)
                 //Do something with task4
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

是否有上述代码的替代品?我正在寻找一种'奉承'的方式,在任务上的开关套管取决于哪些非空.

非常感谢任何可以提供帮助的人.

Mar*_*ell 13

它们都是同一类型吗?你想在每个分支做同样的事吗?如果是这样,您可以使用null-coalescing:

var chosenTask = task1 ?? task2 ?? task3 ?? task4;
// do something with chosenTask
Run Code Online (Sandbox Code Playgroud)

  • @Jon true,true(好吧,我在同一个对话中跟踪JonSkeet和奇怪的名字SkonJeet) (3认同)
  • 这也依赖于OP想要在选择的任何任务中执行相同的操作,而不仅仅是类型相同. (2认同)