Array.Copy против .Skip() и .Take() в C#C#

Место общения программистов C#
Anonymous
Array.Copy против .Skip() и .Take() в C#

Сообщение Anonymous »

Я просматривал Как клонировать диапазон элементов массива в новый массив? и некоторые подобные вопросы. Во многих местах я читал ответы, подобные ответам Джона Скита:

Вы можете использовать Array.Copy(...) для копирования в новый массив после его создания, но я не думаю, что существует метод, который создает новый массив и копирует диапазон элементов.
Если вы используете .NET 3.5, вы сможете используйте LINQ:

Код: Выделить всё

var newArray = array.Skip(3).Take(5).ToArray();
но это будет несколько менее эффективно.
[...]

Меня интересует, почему .Skip() и .Take() не являются операциями с постоянным временем для массивов?
В свою очередь, если бы это были операции с постоянным временем, не будут ли методы Skip() и .Take() (без вызова .ToArray() в конце) имеют такое же время работы без накладных расходов, связанных с выполнением Array.Copy, но также более эффективно используют пространство?

Подробнее здесь: https://stackoverflow.com/questions/735 ... in-c-sharp

Вернуться в «C#»