为什么Task.WhenAll可以接受任意数量的Task参数?

时间:2016-11-29 16:47:10

标签: c# .net vb.net

在查看Async和Await时,我注意到可以使用任意数量的参数调用Task.WhenAll:

Threading.Tasks.Task.WhenAll(New Threading.Tasks.Task(New Action(Sub() Console.WriteLine("Hello"))),
                             New Threading.Tasks.Task(New Action(Sub() Console.WriteLine("Hello"))),
                             New Threading.Tasks.Task(New Action(Sub() Console.WriteLine("Hello"))),
                             New Threading.Tasks.Task(New Action(Sub() Console.WriteLine("Hello"))),
                             New Threading.Tasks.Task(New Action(Sub() Console.WriteLine("Hello"))))

为什么这样做,但是像Array.Reverse这样的方法不允许你传递任意数量的参数?

1 个答案:

答案 0 :(得分:0)

结果看到.Net Reference Source网站上的代码,特别是the overload with an array of Tasks后,在查看此SO post后,我发现参数关键字(VB.Net中的ParamArray)允许您不传递任何参数,指定类型的任意数量的逗号分隔参数或指定类型的数组。

您可以将其视为在Javascript中解构数组或在Python中解析args数组。