问题描述
我的项目中有 func<Task>
个委托,可以为 null。有没有什么方法可以使这样一个委托的调用更简单,如下所示?
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);
第二个使用 null-conditional operator ?.
,它只在 Invoke()
不为空时调用 funcWithTask
,而 null-coalescing operator ??
返回当左侧操作数为空时的右侧操作数(在本例中为 Task.CompletedTask
)。