C# Task.WaitAll()-无参数

C# Task.WaitAll()-无参数,c#,.net,task-parallel-library,C#,.net,Task Parallel Library,使用System.Threading.Tasks.Task.WaitAll()我可以看到这个方法应该使用的可用参数 可以看到,但在visual studio中编写时,我能够调用完全没有参数的方法: Task.WaitAll(); 而且它在IDE中没有显示为语法错误(因为缺少参数), 你能解释一下为什么这种特定的方法能做到这一点吗?这种方法的完整定义如下: public static void WaitAll(params Task[] tasks) 单词params表示该方法接受数量可变的参

使用
System.Threading.Tasks.Task.WaitAll()
我可以看到这个方法应该使用的可用参数

可以看到,但在visual studio中编写时,我能够调用完全没有参数的方法:

Task.WaitAll();
而且它在IDE中没有显示为语法错误(因为缺少参数),
你能解释一下为什么这种特定的方法能做到这一点吗?

这种方法的完整定义如下:

public static void WaitAll(params Task[] tasks)
单词
params
表示该方法接受数量可变的参数。还显式允许0个参数

不用说,这种方法调用时没有效果。

该方法重载。表格如下:

public static void WaitAll(
    params Task[] tasks
)

params
参数可以接受零个或多个参数。

@0A0D为什么?对于
params
的许多实现,不使用参数是明智的,例如
Console.WriteLine()
。在这种特殊情况下,它没有意义(也没有问题)。@Servy:至少在一些情况下,编译器会在C#中警告您,以确保这是您真正想要的。这不是错误,警告有时会显示意外的错误。@0A0D是的,我知道,当添加编译器警告时,他们会尽力确保代码很可能是错误。在这种情况下,概率不是很高。这更像是例外而不是规则。还请注意,使用此代码的负面影响非常非常小,这也是添加编译器警告的一点。是否确实希望在每次编写
Console.WriteLine()
时看到编译器警告?我知道我不知道。@Servy:很公平,但是Console.WriteLine()实际上写了一个新行,因为它在传入的参数的末尾追加了一个新行。而Task.WaitAll()什么也不做。它检查params是否大于0,如果大于0,则返回。为了完整,它确实需要一个显式的可变长度参数。实际上没有必要调用Task.WaitAll()。@0A0D,所以您想将特殊情况
Task.WaitAll
作为一种方法?重点是什么?获得的价值是什么?你没有阻止任何重大的负面后果,你也没有阻止对很多人造成轻微的负面后果。完全不值得。如果它是正数,那么它的净值可以忽略不计。