List<T>
сохраняет память непрерывно. Внутренне он использует массив для хранения. Когда вы достигаете емкости, выделяется новый массив и копируется память.
Это верно для List<T>
экземпляров классов или структур. Однако, когда T
является ссылочным типом (классом), вы сохраняете непрерывный список ссылок . Экземпляры класса не могут быть смежными, так как вы можете включить список, который содержит 100 ссылок на того же экземпляра класса.
Для ответа на ваши конкретные вопросы:
Вопрос в том, почему? он НЕ хранит себя непрерывно, так почему он заботится о перераспределении себя?
хранит элементы непрерывно, поэтому требуется перераспределение.
почему List со структурами размещается в смежной памяти, в отличие от List классов?
Оба хранятся смежно, но во втором случае (классы) вы храните список ссылок на экземпляр класса.