In most cases List<>
will be better. It's clearer, it makes it easier to use, loop, has many useful properties and methods and it doesn't need a contiguous memory block that an array needs. It grows / shrinks when you want and your code will simply become more readable.
In terms of performance, in many cases List<>
may outperform an array, especially if you need to grow / shrink, but only measuring it will really show and, really, this type of performance optimization is hardly needed these days.
Use arrays when you must pass big chunks of memory around (array of bytes) or need to do interoperability (i.e., no Win32 API will understand List). Use List.ToArray() for these cases to have the best of both worlds.
In cases where you must lookup things in your array or list, a Dictionary
is likely the more suitable candidate and it is blazingly fast in all but a few scenarios.