Класс List<T>
поддерживается массивом, поэтому нет никакой разницы в производительности между использованием List для вставки с индексом 0 и использованием массива для вставки с индексом 0, за исключением того, что разработчики BCL протестировали гораздо более обширнодля исполнения.Не принимайте снижение производительности метода ToList
и конструктора List<T>
, так как новое распределение массива происходит за кулисами в любом случае.
Хуже, вам может понадобиться массив two Выделения с вашим опубликованным кодом, поскольку конструктор List<T>
(вызываемый ToList) может выделять массив точно размером array
, а затем метод Add
должен выделить новый массив только для выполнения вставки.Маловероятно, но возможно.
Вкратце, выделите новый массив самостоятельно.
РЕДАКТИРОВАТЬ:
Учитывая, что ваш метод должен вернуть массив,бессмысленно просматривать список.Со списком вы собираетесь скопировать исходный массив в массив, поддерживающий List<T>
, затем вставить, а затем скопировать этот резервный массив в другой массив, который будет возвращен из вашего метода.Это делает минимум два выделения массива плюс возможный третий, который я упомянул выше.Использование необработанных массивов гарантирует ровно одно выделение массива.