В разрезе накладных расходов:
Передавать массивы int VS списки int ?
A: *устало
Списки и массивы используются для разных целей
Параметр-список обычно передаётся, если вы хотите, чтобы метод заполнил этот список или сделал с ним что-нибудь ещё.
Массив — когда вы хотите, чтобы метод просто перебрал значения, при этом IEnumerable использовать неудобно.
Если вы хотите передать список, но метод не должен его изменять — есть ReadOnlyCollection<T>.
Q> Исходник — список — хочу отдать функции чтобы перебрала, IEnumerable использовать не удобно.
т.е. передаю Массив, по вашим предложения. Но, ведь для создание массива и передачи его в параметрах нужны накладные расходы. Какая величина этих накладных расходов?
Q> в списке 100-5000 значений. среднее 200-300
A> Короткий ответ: никакая, копирование из списка в массив использует Array.CopyTo(), он для мелких списков практически константа.
Чуть длиннее: просто померьте. Если критично — передавайте сам список. Если некритично — пишите так, как вам удобно.