Существуют ли переменные параметры для параметров метода?
Мне нравится ключевое слово params . Но иногда мне нужно, чтобы два параметра были params .
Я хочу вызвать метод так:
Method(1, "a", 2, "b", 3, "c")
, где 1, 2 и 3 - ключи, а "a", "b" и "c" - назначенные значения.
Если я попытаюсь определить параметры метода, я бы интуитивно попытался использовать params для двух параметров, например:
void Method(params int[] i, string[] s)
Компилятор добавляет каждый параметр в нечетных позициях к первому параметру и каждый параметр в четных позициях ко второму параметру.
Но (как вы знаете) params возможно только для последнего параметра.
Конечно, я мог бы создать класс параметров (например, KeyValue
) и использовать его так:
Method(new[] {new KeyValue(1, "a"), new KeyValue(2, "b"), new KeyValue(3, "c")})
Но это слишком много кода imo.
Есть ли более короткая запись?
Редактировать: Только сейчас я нашел хороший ответ на другой вопрос: предлагается наследовать от List и перегрузить Add метод, позволяющий инициализировать новый список следующим образом:
new KeyValueList<int, string>{{ 1, "a" }, { 2, "b" }, { 3, "c" }}
Определение метода будет:
void Method(KeyValueList<int, string> list)
Вызов будет:
Method(new KeyValueList<int, string>{{ 1, "a" }, { 2, "b" }, { 3, "c" }})