Task.WhenAll结果排序

我从这里了解到Task.Whenall的任务执行顺序不是确定性的,但我找不到任何有关结果顺序的信息。

结果集合是否按照输入中排序的任务或结果的顺序包含结果?

从我做的测试来看,它似乎保留了订单,但我需要确认。

来自MSDN :

 Task.WhenAll(IEnumerable>) 

这是包含此语句的四个中唯一的重载:

如果没有任何任务出现故障且没有任何任务被取消,则生成的任务将以RanToCompletion状态结束。 返回任务的结果将被设置为一个数组,其中包含所提供任务的所有结果,其顺序与提供的顺序相同 (例如,如果输入任务数组包含t1,t2,t3,则输出任务的结果将返回TResult []其中arr [0] == t1.Result,arr 1 == t2.Result,and arr [2] == t3.Result)。