Сравнение массивов и списков < T & gt ;: Когда и какие использовать?

Это зависит от того, где вы помещаете функцию onload (тег head или body или далее вниз), при этом внутренняя привязка событий заметно немного отличается в разных браузерах.

См. также window.onload vs document. OnLoad

551
задан nawfal 10 November 2013 в 21:04
поделиться

7 ответов

Редко, в действительности, чтобы Вы хотели бы использовать массив. Определенно используйте List<T> любое время, Вы хотите добавить/удалить, что данные, начиная с изменения размеров массивов являются дорогими. Если Вы знаете, что данные являются фиксированной длиной, и Вы хотите микрооптимизировать для [приблизительно 1 127] очень конкретных причина (после сравнительного тестирования), то массив может быть полезным.

List<T> предложения партия [еще 1115] функциональность, чем массив (хотя LINQ выравнивает его немного), и почти всегда правильный выбор. За исключением params аргументы, конечно.;-p

Как счетчик - List<T> одномерен; тогда как Вы имеете, имеют прямоугольный (и т.д.) выстраивает как int[,] или string[,,] - но существуют другие способы смоделировать такие данные (если Вам нужно) в объектной модели.

См. также:

Однако я делаю партия из использования массивов в моем protobuf-сеть проект; полностью для производительности:

  • это делает большое смещение бита, таким образом, byte[] в значительной степени важно для кодирования;
  • я использую локальную прокрутку byte[] буфер, который я заполняю прежде, чем отправить вниз к базовому потоку (и v.v.); более быстрый, чем BufferedStream и т.д.;
  • это внутренне использует основанную на массиве модель объектов (Foo[], а не List<Foo>), так как размер фиксируется когда-то созданный и должен быть очень быстрым.

, Но это - определенно исключение; для общей обработки направления деятельности, List<T> победы каждый раз.

533
ответ дан Community 10 November 2013 в 21:04
поделиться

Если Вы действительно не обеспокоены производительностью, и этим я имею в виду, "Почему Вы используете.Net вместо C++?" необходимо придерживаться List<>. Это легче поддержать и делает всю грязную работу изменения размеров массива негласно для Вас. (При необходимости, List<> довольно умно о выборе размеров массива, таким образом, он не должен обычно.)

11
ответ дан Spencer Ruport 10 November 2013 в 21:04
поделиться

Действительно просто ответ для добавления ссылки, которая я удивлен, еще не был упомянут: запись в блоге Lippert Eric на "Массивы, которые рассматривают несколько вредными".

можно судить из заголовка, что он предлагает использовать наборы везде, где практичный - но поскольку Marc справедливо указывает, существует много мест, где массив действительно является единственным практическим решением.

114
ответ дан Jon Skeet 10 November 2013 в 21:04
поделиться
  • 1
    Большой список! Можно было также полагать, что leiningen был DSL – Jonas 19 October 2010 в 13:10

Если я знаю точно, в каком количестве элементов я собираюсь нуждаться, сказать, что мне нужны 5 элементов и [только 111] когда-либо 5 элементов тогда, я использую массив. Иначе я просто использую List< T>.

3
ответ дан smack0007 10 November 2013 в 21:04
поделиться
  • 1
    @MattKing Мой datefirst также установлен на 7, но изменение Вы предложили wasn' t достаточно, чтобы заставить его работать на меня. См. мой ответ для решения, которое я предложил. – Nate Cook 30 August 2012 в 02:20

Это полностью зависит от контекстов, в которых необходима структура данных. Например, если Вы создаете объекты, которые будут использоваться другими функциями, или сервисы с помощью Списка лучший способ выполнить его.

Теперь, если у Вас есть список объектов и Вы просто хотите отобразить их, сказать относительно массива веб-страницы, контейнер, который необходимо использовать.

0
ответ дан sajidnizami 10 November 2013 в 21:04
поделиться
  • 1
    Я использовал этого, другие didn' t, кажется, работают с отрицательными сторонами – agrath 26 March 2014 в 04:02

Несмотря на другие ответы, рекомендующие List<T>, Вы захотите использовать массивы при обработке:

  • изображение побитово отображают данные
  • другие структуры данных низкого уровня (т.е. сетевые протоколы)
19
ответ дан Alnitak 10 November 2013 в 21:04
поделиться

В большинстве случаев достаточно использовать Список . Список List использует внутренний массив для обработки своих данных и автоматически изменяет размер массива при добавлении большего количества элементов в список List , чем его текущая емкость, что делает его более простым в использовании, чем массив , где вам нужно знать емкость заранее.

См. http://msdn.microsoft.com/en-us/library/ms379570 (v = vs.80) .aspx # datastructures20_1_topic5 для получения дополнительной информации информацию о списках в C # или просто декомпилируйте System.Collections.Generic.List .

Если вам нужны многомерные данные (например, с использованием матрицы или в графическом программировании), вы, вероятно, воспользуетесь массивом .

Как всегда, если память или производительность являются проблемой, измерьте Это! В противном случае вы можете сделать ложные предположения о коде.

3
ответ дан 22 November 2019 в 22:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: