С общим списком вы можете /Remove
и т.д. дешево (по крайней мере, в дальнем конце). Изменение размера массива (для добавления/удаления) является более дорогостоящим. Очевидным недостатком является то, что список имеет запасную емкость, поэтому может быть потрачено несколько байтов, но в большинстве случаев этого не стоит беспокоиться (и вы можете его обрезать).
Как правило, предпочитайте списки, если вы не знаете ваши данные никогда не меняют размер.
API-мудрый, поскольку LINQ там мало что выбрать между ними (то есть дополнительные методы на List<T>
в значительной степени дублируются LINQ, поэтому массивы получают их бесплатно).
Еще одно преимущество заключается в том, что список не нужно подвергать сеттер:
private readonly List<Foo> items = new List<Foo>();
public List<Foo> Items { get { return items; } }
устранив ряд null
ошибок, и позволяет сохранить контроль над данными (особенно, если вы используете другая реализация IList<>
, которая поддерживает проверку/проверку при изменении содержимого).
Ваш класс будет более чистым, если вы использовали автоматически реализованные свойства: public string EmployeeName {get; задавать;}. Использование полных имен, таких как EmployeeName, также поможет. О, а как насчет некоторых типов тоже? :-) –