Есть такая штука, которая позволяет вызывать метод, когда мы не знаем сколько параметров хотим туда передать:
void Method(params object[] arr)
Но есть некоторые особенности, которые нужно понимать:
1. По-умолчанию такой вызов создает новый массив (т.е. триггерит GC, что плохо):
void Method1(params object[] arr)
void Method2(object[] arr)
var arr = new int[10];
Method1(arr); // будет создан массив object[1] и к первому элементу присвоен массив arr
Method2(arr); // будет ошибка компиляции, т.к. object[] не соотвествует типу int[]
2. Если мы передадим точный тип массива, то это не будет создавать новый массив:
void Method1(params int[] arr)
void Method2(int[] arr)
var arr = new int[10];
Method1(arr);
Method2(arr);
// Эти 2 вызова идентичны
3. Любой вызов будет создавать новый массив:
void Method(params int[] arr)
Method(1, 2, 3)
Method(1)
Вывод: избегайте методов с params, особенно если это хот часть.
#gc #performance #params #basics