Does that allocate me a contiguous block of memory for the object values?
In my opinion, it allocates a block of memory for references, and all of references are null. The values (objects) are not allocated yet and are not assigned to list elements. The public sources shows the 'new T[capacity]' statement, which allocates an array of nulls. The caching will be applied to this array of references.
I think that 'new List<MyClass>' is similar to 'new std::vector<MyClass*>'.
In case of 'List<MyStructure>' or 'List<int>', for example, it will allocate a block of values.