How does a large list item contain a <uint> list in .NET 4.0?
List<> uses an array inside, so a List<uint> should occupy O (4bytes * n), like uint[] . There may be some additional overhead compared to an array, but you usually don't need to do this.
Depending on the particular implementation (this may be different when using Mono as the runtime instead of the MS.NET runtime), the internal array will be larger than the number of actual elements in the list. For example: a list of 5 elements has an internal array that can store 10, a list of 10,000 elements can have an internal array of size 11,000. Thus, you cannot say that the internal array will always be twice as large or 5% larger than the number list items, it may also depend on size.
Edit: I just saw Hans Passant described the growing List<T> behavior here .
So, if you have a collection of elements that you want to add, and you cannot know the size of this collection at the time of creating the list, use List<T> . It is specially designed for this occasion. It provides O (1) fast random access to elements and has very few memory resources (internal array). On the other hand, it is very slow when deleting or pasting in the middle of a list. If you need these operations often, use LinkedList<T> , which then has more memory overhead (per element!). If you know the size of your collection from the start, and you know that this will not change (or just a few times), use arrays.