ASP.NET списки C#, который и когда?

var важно для анонимных типов (как указано в одном из предыдущих ответов на этот вопрос).

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

var i = 5;
int j = 5;

SomeType someType = new SomeType();
var someType = new SomeType();

... совершенно субъективно.

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

6
задан corymathews 11 August 2009 в 14:59
поделиться

8 ответов

List<String> Types = new List<String>();
LinkedList<String> Types4 = new LinkedList<String>();

являются общими списками, то есть вы определяете тип данных, которые будут туда входить, что уменьшило упаковку и распаковку.

для разницы в списке и списке ссылок см. Это -> Когда мне следует использовать список или LinkedList

ArrayList - это не общая коллекция, которую можно использовать для хранения любого типа данных.

2
ответ дан 16 December 2019 в 21:44
поделиться

См. Статью о Обычно используемые типы коллекций из MSDN, где приведен список различных типов доступных вам коллекций и их предполагаемое использование.

1
ответ дан 16 December 2019 в 21:44
поделиться

ArrayList - это пережиток от Generics. На самом деле нет причин использовать их ... они медленные и используют больше памяти, чем List <>. В общем, вероятно, нет причин использовать LinkedList, если вы не вставляете в середине ОЧЕНЬ большие списки.

Единственное, что вы найдете в .NET быстрее, чем List <>, - это фиксированный массив ... но разница в производительности на удивление мала.

2
ответ дан 16 December 2019 в 21:44
поделиться

ArrayList - это тип списка .Net 1.0. Список - это общий список, представленный с универсальными шаблонами в .Net 2.0.

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

Я не знаю о различиях в производительности.

Этот вопрос кое-что говорит о различиях List и LinkedList.

1
ответ дан 16 December 2019 в 21:44
поделиться

Как уже говорилось, не используйте ArrayList , если это вообще возможно.

Вот немного в Википедии о различия между массивами и связными списками.

Резюме:

Массивы

  • Быстрый произвольный доступ
  • Быстрая вставка / удаление в конце
  • Хорошее расположение в памяти

Связанные списки

  • Быстрая вставка / удаление в начале
  • Быстрая вставка / удаление в конце
  • Быстрая вставка / удаление в середине (с перечислителем)
1
ответ дан 16 December 2019 в 21:44
поделиться

Как правило, используйте List. Не используйте ArrayList; это устарело. Используйте LinkedList в тех редких случаях, когда вам нужно иметь возможность добавлять без изменения размера и не беспокоиться о накладных расходах и потере произвольного доступа.

1
ответ дан 16 December 2019 в 21:44
поделиться

ArrayList, вероятно, меньше с точки зрения памяти, так как он основан на массиве. Он также имеет быстрый произвольный доступ к элементам. Однако добавление или удаление из списка займет больше времени. Это можно немного ускорить, если объект перераспределен в предположении, что вы собираетесь продолжать добавлять. (Это, конечно, уменьшит преимущество памяти.)

Другие списки будут немного больше (на 4–8 байт больше памяти на элемент) и будут иметь низкое время произвольного доступа. Однако очень быстро добавлять или удалять объекты в конце списка. Кроме того, использование памяти обычно соответствует вашим потребностям.

-2
ответ дан 16 December 2019 в 21:44
поделиться

В 99% случаев Список - это то, что вам нужно. Любой ценой избегайте неуниверсальных коллекций.

LinkedList полезен для добавления или удаления без перемешивания элементов, хотя в результате вам придется отказаться от произвольного доступа. Одно из его преимуществ - вы можете удалять элементы во время итерации по узлам.

2
ответ дан 16 December 2019 в 21:44
поделиться
Другие вопросы по тегам:

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