Ответ 1
Это разные типы объектов. Они имеют разные возможности и хранят свои данные по-разному. Вы также можете спросить, в чем разница между десятичной точкой и DateTime.
Массив (System.Array
) фиксируется по размеру после его выделения. Вы не можете добавлять к нему элементы или удалять элементы из него. Кроме того, все элементы должны быть одного типа. В результате он безопасен по типу и также является наиболее эффективным из трех, как с точки зрения памяти, так и производительности. Кроме того, System.Array поддерживает несколько измерений (т.е. Имеет свойство Rank), в то время как List и ArrayList не работают (хотя вы можете создать список списков или ArrayList из ArrayLists, если хотите).
ArrayList
- это гибкий массив, содержащий список объектов. Вы можете добавлять и удалять элементы из него, и он автоматически занимается распределением пространства. Если вы сохраняете в нем типы значений, они помещаются в коробку и распаковываются, что может быть немного неэффективным. Кроме того, он не является безопасным для типа.
List<>
использует дженерики; это, по сути, версия ArrayList, безопасная для типов. Это означает, что нет бокса или unboxing (что повышает производительность), и если вы попытаетесь добавить элемент неправильного типа, он будет генерировать ошибку времени компиляции.