var
важно для анонимных типов (как указано в одном из предыдущих ответов на этот вопрос).
я категоризировал бы все другое обсуждение его за и против как "религиозная война". Этим я подразумеваю что сравнение и обсуждение относительных достоинств...
var i = 5;
int j = 5;
SomeType someType = new SomeType();
var someType = new SomeType();
... совершенно субъективно.
Неявная типизация средства, что нет никакого штрафа во время выполнения ни за какую переменную, объявляемую с помощью var
ключевое слово, таким образом, это сводится к тому, чтобы быть дебатами о том, что делает разработчиков счастливыми.
List<String> Types = new List<String>();
LinkedList<String> Types4 = new LinkedList<String>();
являются общими списками, то есть вы определяете тип данных, которые будут туда входить, что уменьшило упаковку и распаковку.
для разницы в списке и списке ссылок см. Это -> Когда мне следует использовать список или LinkedList
ArrayList - это не общая коллекция, которую можно использовать для хранения любого типа данных.
См. Статью о Обычно используемые типы коллекций из MSDN, где приведен список различных типов доступных вам коллекций и их предполагаемое использование.
ArrayList - это пережиток от Generics. На самом деле нет причин использовать их ... они медленные и используют больше памяти, чем List <>. В общем, вероятно, нет причин использовать LinkedList, если вы не вставляете в середине ОЧЕНЬ большие списки.
Единственное, что вы найдете в .NET быстрее, чем List <>, - это фиксированный массив ... но разница в производительности на удивление мала.
ArrayList - это тип списка .Net 1.0. Список - это общий список, представленный с универсальными шаблонами в .Net 2.0.
Общие списки обеспечивают лучшую поддержку во время компиляции. Списки универсальных типов безопасны по типу. Вы не можете добавлять объекты неправильного типа. Таким образом, вы знаете, какой тип имеют хранимые объекты. Нет обязательных проверок типов и приведений типов.
Я не знаю о различиях в производительности.
Этот вопрос кое-что говорит о различиях List и LinkedList.
Как уже говорилось, не используйте ArrayList
, если это вообще возможно.
Вот немного в Википедии о различия между массивами и связными списками.
Резюме:
Как правило, используйте List. Не используйте ArrayList; это устарело. Используйте LinkedList в тех редких случаях, когда вам нужно иметь возможность добавлять без изменения размера и не беспокоиться о накладных расходах и потере произвольного доступа.
ArrayList, вероятно, меньше с точки зрения памяти, так как он основан на массиве. Он также имеет быстрый произвольный доступ к элементам. Однако добавление или удаление из списка займет больше времени. Это можно немного ускорить, если объект перераспределен в предположении, что вы собираетесь продолжать добавлять. (Это, конечно, уменьшит преимущество памяти.)
Другие списки будут немного больше (на 4–8 байт больше памяти на элемент) и будут иметь низкое время произвольного доступа. Однако очень быстро добавлять или удалять объекты в конце списка. Кроме того, использование памяти обычно соответствует вашим потребностям.
В 99% случаев Список - это то, что вам нужно. Любой ценой избегайте неуниверсальных коллекций.
LinkedList полезен для добавления или удаления без перемешивания элементов, хотя в результате вам придется отказаться от произвольного доступа. Одно из его преимуществ - вы можете удалять элементы во время итерации по узлам.