Массив всегда размещается в непрерывной ячейке памяти.Если среда выполнения не может найти непрерывное местоположение, то возникает исключение среды выполнения.IIRC это будет OutOfMemoryException
.
Тот факт, что массив расположен в непрерывной части памяти, не означает, что объекты являются.Если тип элементов массива является ссылочным типом, как в случае с string
, это никак не может быть так, потому что при выделении массива невозможно знать, сколько памяти потребуется каждой строке.Размер ссылок на объекты общеизвестен, а не размер самих объектов.
Теперь, если тип элементов массива является типом значения, то размер известен перед рукой и массивом.выделит экземпляры самих объектов в слоте непрерывной памяти.
Итак, для краткости:
- Если массив относится к ссылочному типу, тогда ссылки будутвыделяется в слоте непрерывной памяти.Упомянутые объекты, с другой стороны, могут быть размещены в любом месте памяти.
- Если массив имеет тип значения, сами экземпляры будут размещены в слоте непрерывной памяти.