Создание методов с бесконечными параметрами?
В С# вы можете сделать это:
foo = string.Format("{0} {1} {2} {3} ...", "aa", "bb", "cc" ...);
Этот метод Format()
принимает бесконечные параметры, являясь первым, как строка должна быть отформатирована, а остальные - значениями, которые должны быть помещены в строку.
Сегодня я пришел к ситуации, когда мне пришлось получить набор строк и протестировать их, затем я вспомнил эту языковую функциональность, но я понятия не имел. После нескольких неудачных поисков в Интернете я понял, что было бы разумнее просто получить массив, который не сделал меня вполне удовлетворенным.
Q: Как создать функцию, которая принимает бесконечные параметры? И как его использовать?
Ответы
Ответ 1
С 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[]
, называемого numbers
.
Ответ 2
Используйте ключевое слово params. Использование:
public void DoSomething(int someValue, params string[] values)
{
foreach (string value in values)
Console.WriteLine(value);
}
Параметр, который использует ключевое слово params, всегда заканчивается.
Ответ 3
Несколько заметок.
Парамы должны быть помечены по типу массива, например string [] или object [].
Параметр, обозначенный w/params, должен быть последним аргументом вашего метода. Например, Foo (string input1, object []).
Ответ 4
используйте params
. Например
static void Main(params string[] args)
{
foreach (string arg in args)
{
Console.WriteLine(arg);
}
}
Ответ 5
Вы можете достичь этого, используя ключевое слово params.
Маленький пример:
public void AddItems(params string[] items)
{
foreach (string item in items)
{
// Do Your Magic
}
}
Ответ 6
public static void TestStrings(params string[] stringsList)
{
foreach (string s in stringsList){ }
// your logic here
}
Ответ 7
public string Format(params string[] value)
{
// implementation
}
Используется ключевое слово params
Ответ 8
function void MyFunction(string format, params object[] parameters) {
}
Instad объекта [] вы можете использовать любой тип, который вам нравится. Аргумент params всегда должен быть последним в строке.