有时我想并行等待一堆任务,但这些任务本身又取决于某些条件。我可以这样写:
var tasks = new List<Task> { DoThisAsync(), DoThatAsync() };
if (condition) tasks.Add(AlsoDoOtherStuffAsync());
await Task.WhenAll(tasks);
但是如果我写下
var task = Task.WhenAll(DoThisAsync(), DoThatAsync());
if (condition) task = Task.WhenAll(task, AlsoDoOtherStuffAsync());
await task;
这两个版本的行为有什么区别吗?哪个更受欢迎或更符合惯用语?