Томас и Кирк правы, это будет трудно решить, и даже более того, это может привести к неожиданному поведению с точки зрения разработчика, использующего его.Например, возьмите следующий класс:
public class Overload<T, U>
{
public void SomeMethod(params T[] arrayOfT, params U[] arrayOfU) { }
}
Разрешение нескольких параметров с использованием ключевого слова 'params' в методе сделало бы эту компиляцию просто отличной и работало бы в большинстве случаев, пока кто-то не попытался использоватькласс как Overload<string, string>
(или что-то подобное), а затем произойдет ошибка компиляции.Другая трудность заключается в том, что параметр, помеченный ключевым словом 'params', позволяет пропустить этот параметр при вызове метода.Например, следующее также невозможно адекватно разрешить, если метод вызывается без параметров или даже с несколькими значениями типа int.
void SomeOtherMethod(params string[] arrayOfString, params int[] arrayOfInt);
void SomeOtherMethod(params int[] arrayOfInt);
Обычно добавляются языковые функции, если для них есть явное преимущество,Они сделают вещи легче или просто помешают прогрессу?Это явное препятствие, и его можно обойти, если сделать, как предложил Томас, и использовать параметр params object [].Вы также можете передавать отдельные массивы (например, SomeOtherMethod (string [] arrayOfString, int [] arrayOfInt)), если вам лучше подходит разделение по типу.