Функция с переменным числом аргументов - PullRequest
40 голосов
/ 20 марта 2012

Как видно из заголовка, мне нужно знать, существует ли соответствующий синтаксис, такой как ... в параметрах метода, например,

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

(любезно предоставлено кодом из Википедии)

Ответы [ 6 ]

54 голосов
/ 20 марта 2012

Да, вы можете написать что-то вроде этого:

void PrintReport(string header, params int[] numbers)
{
    Console.WriteLine(header);
    foreach (int number in numbers)
        Console.WriteLine(number);
}
9 голосов
/ 20 марта 2012

Попробуйте использовать ключевое слово params, помещенное перед оператором, например

myFunction(params int[] numbers);
7 голосов
/ 20 марта 2012

Да, есть.Как сказал Адриано, вы можете использовать ключевое слово C # 'params'.Примером является ссылка ниже:

params (C # Reference)

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

" Ключевое слово params позволяет указать параметр метода, который принимаетпеременное число аргументов.

Вы можете отправить список аргументов, разделенных запятыми, типа, указанного в объявлении параметра, или массив аргументов указанного типа. Также вы не можете отправлять аргументы без аргументов.

Никакие дополнительные параметры не разрешены после ключевого слова params в объявлении метода, и только одно ключевое слово params разрешено в объявлении метода. "

4 голосов
/ 20 марта 2012

Вы можете объявить метод для получения переменного числа параметров, используя ключевое слово params.Как и при использовании ... в Java, это даст вам массив и позволит вам вызывать методы с переменным числом параметров: http://msdn.microsoft.com/en-us/library/w5zay9db(v=vs.71).aspx

3 голосов
/ 20 марта 2012

Я полагаю, вы имеете в виду 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();
}
3 голосов
/ 20 марта 2012

Это должно быть

void printReport(String header, params int[] numbers)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...