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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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