Есть ли C # альтернатива параметрам vararg в Java?

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

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

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

void f1(String... a)
c#
75 голосов | спросил Pradeep K M 12 PM000000110000001731 2013, 23:12:17

2 ответа


0

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

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

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

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

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

ответил Jon Skeet 12 PM000000110000004531 2013, 23:14:45
0

Посмотрите params (справочник по 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);
ответил Adriaan Stander 12 PM000000110000005531 2013, 23:15:55

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132