Подтвердить что ты не робот

Есть ли альтернатива С# для Java vararg?

Я работал над Java и новичок в технологии .Net

Можно ли объявить функцию в С#, которая принимает переменные входные параметры

Есть ли какой-либо синтаксис С#, похожий на следующий синтаксис Java?

void f1(String... a)
4b9b3361

Ответ 1

Да, С# имеет эквивалент параметров varargs. Они называются массивами параметров и представлены с помощью модификатора params:

public void Foo(int x, params string[] values)

Затем назовите его с помощью

Foo(10, "hello", "there");

Как и в случае с Java, это может быть только последний параметр. Обратите внимание, что (как и в случае с Java) параметр params object[] objects может легко вызвать путаницу, так как вам нужно помнить, должен ли один аргумент типа object[] снова завернуться или нет. Аналогично для любого типа с нулевым значением вам нужно помнить, будет ли один аргумент null рассматриваться как ссылка на массив или один элемент массива. (Я думаю, что компилятор только создает массив, если это необходимо, но я склонен писать код, который позволяет мне забыть об этом.)

Ответ 2

Посмотрите params (ссылка на С#)

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

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

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

Как показано в примере, метод объявляется как

public static void UseParams(params int[] list)
{
    for (int i = 0; i < list.Length; i++)
    {
        Console.Write(list[i] + " ");
    }
    Console.WriteLine();
}

и используется как

UseParams(1, 2, 3, 4);