如何使用await简单安全地调用可为空的委托
c#
func<Task>我的项目中有代表可以为空。有没有办法使这样一个委托的调用更简单,如下所示?
public async Task Test()
{
Func<Task> funcWithTask = null;
await (funcWithTask != null ? funcWithTask.Invoke() : Task.CompletedTask);
}
回答
有没有办法使这样一个委托的调用更简单,如下所示?
有替代方案:
if (funcWithTask != null) await funcWithTask();
或者:
await (funcWithTask?.Invoke() ?? Task.CompletedTask);
第二个使用空条件运算符 ?.,它只Invoke()在funcWithTask不为空时调用,以及空合并运算符 ??,当左手操作数为空时返回右手操作数(Task.CompletedTask在这种情况下)。