Подтвердить что ты не робот

Передайте несколько необязательных параметров функции С#

Есть ли способ настроить функцию С# для принятия любого количества параметров? Например, вы могли бы настроить такую ​​функцию, чтобы следующая работа -

x = AddUp(2, 3)

x = AddUp(5, 7, 8, 2)

x = AddUp(43, 545, 23, 656, 23, 64, 234, 44)
4b9b3361

Ответ 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 также поддерживает необязательные параметры, которые могут быть полезны в некоторых других ситуациях. См. эту статью.