Существует ли способ настроить функцию C# для принятия какого-либо количества параметров? Например, могли Вы настраивать функцию, таким образом что следующий вся работа -
x = AddUp(2, 3)
x = AddUp(5, 7, 8, 2)
x = AddUp(43, 545, 23, 656, 23, 64, 234, 44)
Используйте массив параметров с модификатором params
:
public static int AddUp(params int[] values)
{
int sum = 0;
foreach (int value in values)
{
sum += value;
}
return sum;
}
Если вы хотите убедиться, что есть хотя бы одно значение (а не пустой массив), то укажите это отдельно:
public static int AddUp(int firstValue, params int[] values)
(Установите sum
на firstValue
, чтобы начать с этой реализации. )
Обратите внимание, что также следует обычным способом проверять ссылку на массив на ничтожность. Внутри метода параметр представляет собой совершенно обычный массив. Модификатор массива параметра имеет значение только тогда, когда вы вызываете метод. В принципе компилятор превращает:
int x = AddUp(4, 5, 6);
в нечто вроде:
int[] tmp = new int[] { 4, 5, 6 };
int x = AddUp(tmp);
Вы можете вызывать его с совершенно обычным массивом - так что последний синтаксис действителен и в исходных кодах.
.C# 4.0 также поддерживает дополнительные параметры, которые могут быть полезны в некоторых других ситуациях. Смотрите эту статью.