Я работал над Java и новичок в технологии .Net
Можно ли объявить в C # функцию, принимающую переменные входные параметры
Есть ли какой-либо синтаксис C #, похожий на следующий синтаксис Java?
void f1(String... a)
Я работал над Java и новичок в технологии .Net
Можно ли объявить в C # функцию, принимающую переменные входные параметры
Есть ли какой-либо синтаксис C #, похожий на следующий синтаксис Java?
void f1(String... a)
Ответы:
Да, в C # есть эквивалент параметров varargs. Они называются массивами параметров и вводятся с paramsмодификатором:
public void Foo(int x, params string[] values)
Затем вызовите его с помощью:
Foo(10, "hello", "there");
Как и в случае с Java, это только последний параметр, который может изменяться следующим образом. Обратите внимание, что (как и в случае с Java) параметр params object[] objectsможет легко вызвать путаницу, поскольку вам нужно помнить, предназначен ли один аргумент типа object[]для повторного обертывания или нет. Точно так же для любого типа, допускающего значение NULL, вам нужно помнить, будет ли один аргумент nullобрабатываться как ссылка на массив или как отдельный элемент массива. (Я думаю, что компилятор создает массив только в случае необходимости, но я стараюсь писать код, который избавляет меня от необходимости помнить об этом.)
Взгляните на параметры (Справочник по C #)
Ключевое слово 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);