На самом деле, вы редко захотите использовать массив. Обязательно используйте List<T>
в любое время, когда хотите добавить / удалить данные, поскольку изменение размеров массивов стоит дорого. Если вы знаете, что данные имеют фиксированную длину, и вы хотите микрооптимизировать по какой-то очень специфической причине (после сравнительного анализа), тогда может пригодиться массив.
List<T>
предлагает lot больше функциональности, чем массив (хотя LINQ немного выравнивает его), и почти всегда является правильным выбором. За исключением params
аргументов, конечно. ; -P
В качестве счетчика - List<T>
одномерен; где, поскольку у вас есть прямоугольные (и т. д.) массивы, такие как int[,]
или string[,,]
, но существуют другие способы моделирования таких данных (если вам нужно) в объектной модели.
Смотри также:
Тем не менее, я делаю лот использования массивов в моем проекте protobuf-net ; полностью для производительности:
- он сильно сдвигает бит, поэтому
byte[]
очень важен для кодирования;
- Я использую локальный скользящий буфер
byte[]
, который я заполняю перед отправкой вниз в основной поток (и v.v.); быстрее, чем BufferedStream
и т. д .;
- он внутренне использует модель объектов на основе массива (
Foo[]
вместо List<Foo>
), так как размер устанавливается после сборки и должен быть очень быстрым.
Но это определенно исключение; для общей бизнес-обработки каждый раз выигрывает List<T>
.