在此上下文中,许多嵌套 if 语句的更好替代
本文关键字:语句 更好 if 嵌套 上下文 许多 | 更新日期: 2023-09-27 18:27:48
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
}
}
}
上面代码有替代方法吗?我正在寻找一种"扁平"的方式来在任务上切换外壳,具体取决于哪个不是空的。
提前感谢任何可以提供帮助的人。
它们都是同一类型吗?你想在每个分支中做同样的事情吗?如果是这样,您可以使用空合并:
var chosenTask = task1 ?? task2 ?? task3 ?? task4;
// do something with chosenTask
这取决于您的方法是否执行其他操作。如果没有,您可以使用:
if (task1 != null)
{
// Do something with task1
return;
}
if (task2 != null)
{
// Do something with task2
return;
}
if (task3 != null)
{
// Do something with task3
return;
}
if (task4 != null)
{
// Do something with task4
return;
}
(我正要补充 Marc 提出的相同观点 - 如果你要对第一个非 null 的任务做同样的事情,那么 null 合并运算符确实是你的朋友。
使所有任务都使用 Run(( 方法实现 ITask,并将要运行的任务添加到 ICollection,以便您可以迭代它们。
foreach (var task in TaskCollection) {
task.Run();
}
您可以使用条件运算符,条件是左侧需要一些变量
var v = task1 != null ? do something : task2 == null ? do something : task3 != null ? do something : task4 != null ? do something : null;