Вы создаете версию List<T>.ConvertAll
:
fruits = fruits.ConvertAll(f => f.ToUpper());
ConvertAll
быстрее, чем Select(...).ToList()
, потому что ей никогда не нужно изменять размер списка.
РЕДАКТИРОВАТЬ : Когда вы звоните .Select(...).ToList()
, вызов ToList()
не знает, насколько большим был первоначальный список.Поэтому он создаст небольшой массив, а затем несколько раз изменит его размер по мере заполнения.
В отличие от этого ConvertAll
является частью исходного списка и знает, насколько он большой.Поэтому он может немедленно выделить массив правильного размера, поэтому ему не нужно изменять размер массива.
Ваш метод быстрее, чем любой из них, поскольку вы изменяете список на месте.(Вы никогда не создаете новый список вообще)