Создание методов с бесконечными параметрами?

В C# можно сделать это:

foo = string.Format("{0} {1} {2} {3} ...", "aa", "bb", "cc" ...);

Этот метод Format() принимает бесконечные параметры, будучи первым, как строка должна быть отформатирована, и остальные - значения, которые будут помещены в строку.

Сегодня я пришел к ситуации, где я должен был получить ряд строк и протестировать их, затем я помнил эту функциональность языка, но у меня не было подсказки. После нескольких неудачных веб-поисков я понял, что было бы более благоразумно просто получить массив, который не сделал меня вполне удовлетворенным.

Q: Как я делаю функцию, которая принимает бесконечные параметры? И как я использую его?

53
задан Paul Turner 28 January 2011 в 04:56
поделиться

8 ответов

С ключевым словом params .

Вот пример:

    public int SumThemAll(params int[] numbers)
    {
        return numbers.Sum();
    }

    public void SumThemAllAndPrintInString(string s, params int[] numbers)
    {
        Console.WriteLine(string.Format(s, SumThemAll(numbers)));
    }

    public void MyFunction()
    {
        int result = SumThemAll(2, 3, 4, 42);
        SumThemAllAndPrintInString("The result is: {0}", 1, 2, 3);
    }

Код показывает разные вещи. Прежде всего, аргумент с ключевым словом params всегда должен быть последним (и может быть только один для каждой функции). Кроме того, вы можете вызвать функцию, которая принимает аргумент params , двумя способами. Первый способ проиллюстрирован в первой строке MyFunction , где каждое число добавляется как единственный аргумент. Однако его также можно вызвать с помощью массива, как показано в SumThemAllAndPrintInString , который вызывает SumThemAll с int [] , вызываемыми числами .

93
ответ дан 7 November 2019 в 08:28
поделиться

используйте ключевое слово params . Например

static void Main(params string[] args)
{
    foreach (string arg in args)
    {
        Console.WriteLine(arg);
    }
}
3
ответ дан 7 November 2019 в 08:28
поделиться

Несколько заметок.

Параметры должны быть отмечены для типа массива, например, string [] или object [].

Параметр, помеченный как w / params, должен быть последним аргументом вашего метода. Например, Foo (строка input1, object [] items).

6
ответ дан 7 November 2019 в 08:28
поделиться
    public static void TestStrings(params string[] stringsList)
    {
        foreach (string s in stringsList){ } 
            // your logic here
    }
3
ответ дан 7 November 2019 в 08:28
поделиться
 public string Format(params string[] value)
 {
            // implementation
 }

Используется ключевое слово params

1
ответ дан 7 November 2019 в 08:28
поделиться
function void MyFunction(string format, params object[] parameters) {

}

Вместо object[] вы можете использовать любой тип, который вам нравится. Аргумент params всегда должен быть последним в строке.

1
ответ дан 7 November 2019 в 08:28
поделиться

Этого можно добиться с помощью ключевого слова params .

Маленький пример:

public void AddItems(params string[] items)
{
     foreach (string item in items)
     { 
         // Do Your Magic
     }
}
3
ответ дан 7 November 2019 в 08:28
поделиться

Используйте ключевое слово params. Использование:

public void DoSomething(int someValue, params string[] values)
{
    foreach (string value in values)
        Console.WriteLine(value);
}

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

19
ответ дан 7 November 2019 в 08:28
поделиться
Другие вопросы по тегам:

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