gre*_*man 17 c# arguments specifications params
C#规范 允许你调用一个函数
void foo(params int[] x)
Run Code Online (Sandbox Code Playgroud)
零参数.但是,我没有在C#Lang中找到.规格.关于进一步行为的一个词 - 将foo获取空数组或空引用?我也检查了MSDN - 什么都没有.
行为定义在哪里?
注意:我不是在询问VS的行为,我在询问语言的设计.
Dar*_*rov 13
17.5.1.4参数数组
参数数组允许在方法调用中以两种方式之一指定参数:
•为参数数组提供的参数可以是可隐式转换(第13.1节)的类型的单个表达式,也可以是参数数组类型.在这种情况下,参数数组的作用就像一个值参数.
•或者,调用可以为参数数组指定零个或多个参数,其中每个参数是可隐式转换(第13.1节)的类型的表达式到参数数组的元素类型.在这种情况下,调用创建参数数组类型的实例,其长度对应于参数的数量,使用给定的参数值初始化数组实例的元素,并使用新创建的数组实例作为实际参数.
在同一部分中给出了一个例子:
using System;
class Test
{
static void F(params int[] args) {
Console.Write("Array contains {0} elements:", args.Length);
foreach (int i in args)
Console.Write(" {0}", i);
Console.WriteLine();
}
static void Main() {
int[] arr = {1, 2, 3};
F(arr);
F(10, 20, 30, 40);
F();
}
}
Run Code Online (Sandbox Code Playgroud)
产生输出
Array contains 3 elements: 1 2 3 Array
contains 4 elements: 10 20 30 40 Array
contains 0 elements:
Run Code Online (Sandbox Code Playgroud)
此示例说明了预期的行为:空数组