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
}
}
}
是否有上述代码的替代品?我正在寻找一种“奉承”的方式来处理任务上的开关外壳,而不是空的。
提前感谢任何有帮助的人。
答案 0 :(得分:12)
它们都是同一类型吗?你想在每个分支做同样的事吗?如果是这样,您可以使用null-coalescing:
var chosenTask = task1 ?? task2 ?? task3 ?? task4;
// do something with chosenTask
答案 1 :(得分:3)
使所有任务使用Run()方法实现ITask,并将要运行的任务添加到ICollection中,以便迭代它们。
foreach (var task in TaskCollection) {
task.Run();
}
答案 2 :(得分:2)
这取决于你的方法做了什么。如果没有,您可以使用:
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-coalescing operator确实是你的朋友。)
答案 3 :(得分:1)
您可以使用条件运算符,条件是左侧需要一些变量
var v = task1 != null ? do something : task2 == null ? do something : task3 != null ? do something : task4 != null ? do something : null;