Function with variable number of arguments
Asked Answered
H

7

100

As the title says I need to know if there is a corresponding syntax as java's ... in method parameters, like

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

(code courtesy of wikipedia)

Hammerless answered 20/3, 2012 at 10:2 Comment(2)
duplicate question.please read this link.#911085 or for example read this msdn.microsoft.com/en-us/library/ms182366(v=vs.80).aspxSuppress
Can't find the parallel with java in your linkHammerless
R
135

Yes you can write something like this:

void PrintReport(string header, params int[] numbers)
{
    Console.WriteLine(header);
    foreach (int number in numbers)
        Console.WriteLine(number);
}
Redress answered 20/3, 2012 at 10:5 Comment(0)
C
26

Try using the params keyword, placed before the statement, eg

myFunction(params int[] numbers);
Crazed answered 20/3, 2012 at 10:5 Comment(0)
C
17

Yes, there is. As Adriano said you can use C# 'params' keyword. An example is the in link below:

params (C# Reference)

http://msdn.microsoft.com/en-us/library/w5zay9db.aspx

"The params keyword lets you specify a method parameter that takes a variable number of arguments.

You can send a comma-separated list of arguments of the type specified in the parameter declaration, or an array of arguments of the specified type. You also can send no arguments.

No additional parameters are permitted after the params keyword in a method declaration, and only one params keyword is permitted in a method declaration."

Crayfish answered 20/3, 2012 at 10:8 Comment(0)
H
6

You can declare a method to har a variable number of parameters by using the params keyword. Just like when using ... in Java, this will give you an array and let you call the metods with a variable number of parameters: http://msdn.microsoft.com/en-us/library/w5zay9db(v=vs.71).aspx

Hottentot answered 20/3, 2012 at 10:7 Comment(0)
P
5

This should be

void printReport(String header, params int[] numbers)
Pika answered 20/3, 2012 at 10:5 Comment(0)
A
5

I believe you mean 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();
}
Arsenious answered 20/3, 2012 at 10:5 Comment(0)
S
1

You can use params, although this must always come last in the list:

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

It is however possible to combine params optional parameters (such as [CallerMemberName]) by using named arguments, which works even if the parameters are of the same type.

Declare the method like this:

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

and call it like this:

PrintReport(inputStrings: new[] { "string 1", "string 2" } );
Stat answered 5/4, 2022 at 10:18 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.