An array is a low-level data structure that essentially maps to a region in memory. An ArrayList
is a variable length list implemented as an array of object
that is re-allocated as the list grows.
ArrayList
therefore has some overhead related to managing the size of the internal array, and more overhead related to casting objects to the correct type when you access the list.
Also, storing everything as object
means that value types get boxed on write and unboxed on read, which is extremely detrimental to performance. Using List
, a similar but strongly-typed variable size list avoids this issue.
In fact, ArrayList
is practically deprecated in favor of List
since .NET 2.0.