2 параметра в C # не компилируются - PullRequest
1 голос
/ 21 марта 2012

Я пытаюсь сделать это:

public void CustomMethod(params int[] number,params string[] names)
{
...
}

Если я удаляю одну из них, нет проблем, есть идеи, почему я не могу это сделать?попытался поставить нормальный параметр в середине обоих.

Ответы [ 4 ]

11 голосов
/ 21 марта 2012

Только последний параметр может иметь params.См. документацию .

. Дополнительные ключевые параметры после ключевого слова params в объявлении метода не допускаются, и только одно ключевое слово params разрешено в объявлении метода.

Причина в том, что использование нескольких параметров может привести к неоднозначности.Например, что бы это значило?

public void CustomMethod(params int[] foo, params int[] bar)
{
    ...
}

// ...

CustomMethod(1, 2);
3 голосов
/ 21 марта 2012

Это просто не поддерживается. Компилятор не может знать, когда заканчивается один список параметров и начинается следующий.

0 голосов
/ 21 марта 2012

Ключевое слово params позволяет указать параметр метода, который принимает аргумент, в котором число аргументов является переменным.

Никакие дополнительные параметры не допускаются после ключевого слова params в объявлении метода, и только одно ключевое слово paramsразрешено в объявлении метода.

См. здесь: http://msdn.microsoft.com/en-us/library/w5zay9db(v=VS.71).aspx

0 голосов
/ 21 марта 2012

Насколько я знаю, вы можете написать только один параметр params в конструкторе, который должен быть последним параметром конструктора.

...