Возможно ли иметь несколько параметров params
в С#? Что-то вроде этого:
void foobar(params int[] foo, params string[] bar)
Но я не уверен, что это возможно. Если да, то каким образом компилятор решит, где разделить аргументы?
Возможно ли иметь несколько параметров params
в С#? Что-то вроде этого:
void foobar(params int[] foo, params string[] bar)
Но я не уверен, что это возможно. Если да, то каким образом компилятор решит, где разделить аргументы?
У вас может быть только один аргумент params. У вас могут быть два аргумента массива, и вызывающий может использовать инициализаторы массивов для вызова вашего метода, но может быть только один аргумент params.
void foobar(int[] foo, string[] bar)
...
foobar(new {1, 2,3}, new {"a", "b", "c"});
Нет, это невозможно. Возьмите это:
void Mult(params int[] arg1, params long[] arg2)
как должен интерпретировать этот компилятор:
Mult(1, 2, 3);
Он может быть прочитан как любой из них:
Mult(new int[] { }, new long[] { 1, 2, 3 });
Mult(new int[] { 1 }, new long[] { 2, 3 });
Mult(new int[] { 1, 2 }, new long[] { 3 });
Mult(new int[] { 1, 2, 3 }, new long[] { });
Вы можете взять два массива в качестве таких параметров, как это:
void Mult(int[] arg1, params long[] arg2)
Никакие дополнительные параметры не разрешены после ключевого слова params в объявление метода и разрешено только одно ключевое слово params. Объявление метода.
Нет, допускается только один параметр, и даже это должен быть последний аргумент. Прочитайте this
Это будет работать
public void Correct(int i, params string[] parg)
{}
Но это не сработает
public void Correct(params string[] parg, int i)
{}
Это невозможно. Это может быть только одно ключевое слово params для каждого объявления метода - от MSDN - http://msdn.microsoft.com/en-us/library/w5zay9db(v=vs.71).aspx
void useMultipleParams(int[] foo, string[] bar)
{
}
useMultipleParams(new int[]{1,2}, new string[] {"1","2"})