具有可变数量参数的函数

94

正如标题所述,我需要知道是否有一种与Java的方法参数中的...相对应的语法,例如

void printReport(String header, int... numbers) { //numbers represents varargs
  System.out.println(header);
  for (int num : numbers) {
     System.out.println(num);
  }
}

(代码由维基百科提供)


2
重复的问题,请阅读此链接。https://dev59.com/jHNA5IYBdhLWcg3wkuzO 或者例如阅读此链接:http://msdn.microsoft.com/en-us/library/ms182366(v=vs.80).aspx - Rakesh Patel
1
无法在您提供的链接中找到与Java相关的并行性。 - Gabber
7个回答

128

你可以写出这样的代码:

void PrintReport(string header, params int[] numbers)
{
    Console.WriteLine(header);
    foreach (int number in numbers)
        Console.WriteLine(number);
}

24

尝试使用params关键字,放置在语句之前,例如

myFunction(params int[] numbers);

16

是的,有的。如Adriano所说,您可以使用C#的“params”关键字。

以下链接中提供了一个示例:

params (C# 参考)

http://msdn.microsoft.com/zh-cn/library/w5zay9db.aspx

params关键字允许您指定一个接受可变数量参数的方法参数。

您可以发送一个逗号分隔的参数列表,其类型在参数声明中被指定,或者是一个指定类型的参数数组。您还可以不发送任何参数。

在方法声明中的params关键字后不能再添加其他参数,且在方法声明中只允许一个params关键字。”


6

5

这应该是

void printReport(String header, params int[] numbers)

5
我认为您指的是 params
public void printReport(string header, params int[] list) 
{
    Console.WriteLine(header);

    for (int i = 0 ; i < list.Length; i++)
    {
        Console.WriteLine(list[i]);
    }
    Console.WriteLine();
}

0

你可以使用params,但是它必须始终在列表中放在最后

public void PrintReport(string header, params int[] numbers)
{

然而,可以通过使用命名参数组合params可选参数(例如[CallerMemberName]),即使参数是相同类型的也可以实现。

像这样声明方法:

public static void PrintReport(
           [CallerMemberName] string callerName = "",
           [CallerFilePath] string sourceFilePath = "", 
           params string[] inputStrings)
{

然后这样调用:

PrintReport(inputStrings: new[] { "string 1", "string 2" } );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接