Передайте несколько необязательных параметров функции С#
Есть ли способ настроить функцию С# для принятия любого количества параметров? Например, вы могли бы настроить такую функцию, чтобы следующая работа -
x = AddUp(2, 3)
x = AddUp(5, 7, 8, 2)
x = AddUp(43, 545, 23, 656, 23, 64, 234, 44)
Ответ 1
Используйте массив параметров с модификатором 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);
Вы можете вызвать его с совершенно нормальным массивом, хотя - поэтому последний синтаксис действительно и в исходном коде.
Ответ 2
С# 4.0 также поддерживает необязательные параметры, которые могут быть полезны в некоторых других ситуациях. См. эту статью.