2014-01-22 3 views
0

Есть ли разница между получением массива в List с помощью метода array.ToList() и сделать это через новый список (массив) в коде ниже с точки зрения его производительности и затрат под капотом?Есть ли разница между новым списком <int> (массив) и array.ToList()?

IEnumerable<int> array = new int[]{1,2,3,4,5,6,7,8}; 
List<int> list_Foo = new List<int>(array); 
List<int> list_Bar = array.ToList(); 

ответ

4

Нет; метод расширения Enumerable.ToList<T> - это просто оболочка, которая вызывает конструктор List(IEnumerable<T>).

Единственные дополнительные расходы, которые вы понесете из ToList, - это дополнительный вызов метода и проверка недействительности, которые обычно незначительны (и даже могут быть исключены компилятором JIT).

2

Внутренне, вот что призыв к array.ToList() (Enumerable.ToList()) выглядит следующим образом:

if (source == null) 
    throw Error.ArgumentNull("source"); 

return new List<TSource>(source); 

Таким образом, ваш второй пример работает один и тот же код, как ваш первый пример.