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


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

x = AddUp(2, 3)

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

x = AddUp(43, 545, 23, 656, 23, 64, 234, 44)
2   51   2010-01-04 00:38:34

2 ответа:

использовать массив параметров С 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)

(Set sum до firstValue для начала в реализации.)

обратите внимание, что вы также должны проверить ссылку на массив для nullity обычным способом. В рамках метода параметр является совершенно обычным массивом. Модификатор массива параметров имеет значение только тогда, когда вы вызов метод. В основном компилятор получается:

int x = AddUp(4, 5, 6);

в что-то вроде:

int[] tmp = new int[] { 4, 5, 6 };
int x = AddUp(tmp);

вы можете вызовите его с совершенно нормальным массивом, хотя-так что последний синтаксис действителен и в исходном коде.

в C# 4.0 также поддерживает необязательные параметры, которые могут быть полезны в некоторых других ситуациях. Смотрите этой статьи.