如何使用 await 简单安全地调用可空委托

How to simple and safe call a nullable delegate with await

我的项目中有 func<Task> 个委托,它们可以为空。有什么方法可以使这样的委托的调用更简单,如下所示?

public async Task Test()
{
    Func<Task> funcWithTask = null;

    await (funcWithTask != null ? funcWithTask.Invoke() : Task.CompletedTask);
}

Is there any way to make the call of such a delegate simpler as displayed below?

还有其他选择:

if (funcWithTask != null) await funcWithTask();

或:

await (funcWithTask?.Invoke() ?? Task.CompletedTask);

第二个使用 null-conditional operator ?., which only calls Invoke() when funcWithTask is not null, and the null-coalescing operator ?? 当左侧操作数为空时 returns 右侧操作数(在本例中为 Task.CompletedTask)。