Вы не можете использовать params для любого параметра, кроме последнего ... это часть того, на что он жалуется.
Вы также не можете использовать params
в качестве аргумента типа. Это не только для делегатов, но в целом. Например, вы не можете написать:
List<params string[]> list = new List<params string[]>();
Однако вы можете объявить новый тип делегата, например:
delegate void Foo(int x, params string[] y);
...
Foo foo = SomeMethod();
foo(10, "Hi", "There");
Обратите внимание, что преобразование группы методов должно соответствовать методу, который принимает массив строк - вы не можете объявить SomeMethod как:
void SomeMethod(int x, string a, string b)
и ожидайте, что вышеприведенное сработает, например. Это должно быть:
void SomeMethod(int x, string[] args)
(или он может использовать params
сам, конечно.)