Что именно хранит ArrayList? - PullRequest
       1

Что именно хранит ArrayList?

2 голосов
/ 07 апреля 2011

Я знаю, что могу добавить объект любого типа к экземпляру ArrayList.Если я правильно понял, тогда ссылочные типы преобразуются в объекты (типы значений заключены в квадрат).Кроме того, ArrayList на самом деле хранит списки объектов объекта ссылочного типа?

Ответы [ 6 ]

4 голосов
/ 07 апреля 2011

Внутри класса ArrayList для хранения используется массив фиксированного размера object[] (массив объектов).При добавлении элементов эти элементы автоматически копируются в соответствующие им индексы в массиве.Когда максимальный размер достигнут, создается новый массив с большим размером, и элементы повторно создаются.Так что это просто удобная оболочка вокруг массива статических объектов.

2 голосов
/ 07 апреля 2011

ArrayList - это, по сути, обертка вокруг object[], с функциональностью, позволяющей отслеживать пространство в массиве и увеличивать его (удваивать) по мере необходимости.Обратите внимание, что обычно List<T> предпочтительнее, но для ответа на вопрос: да, он просто хранит ссылки на object s, которые вполне могут быть в штучной упаковке.

A List<T> довольнопочти то же самое, но около T[], что означает, что типы значений могут храниться без упаковки.Типы ссылок по-прежнему хранятся в виде ссылок.Вы также получаете больше безопасности типа;то есть вы не можете добавить неправильную вещь или отыграть полученный предмет неправильно.

2 голосов
/ 07 апреля 2011

ArrayList не хранит объекты, а просто ссылки на эти объекты.

1 голос
/ 07 апреля 2011

Внутренним хранилищем для ArrayList является массив объектов (object[]).

При сохранении ссылочных типов в ArrayList ссылка просто приводится к object и сохраняется в массиве. Экземпляр ссылочного типа сам содержит информацию о своем типе, поэтому его можно преобразовать в фактический тип, когда вы получите его из ArrayList.

Типы значений заключены в рамки внутри объекта, а ссылка на этот объект сохраняется в массиве. Объект содержит информацию о том, какого типа это значение, чтобы его можно было правильно распаковать при получении из ArrayList.

1 голос
/ 07 апреля 2011

ArrayList аналогичен List<object> и был создан до того, как в .NET были обобщенные значения.

Он может хранить все, что происходит от object, который является всеми ссылочными типами и типами значений.Таким образом, вы можете использовать его для хранения списков объектов.

0 голосов
/ 07 апреля 2011

Они хранят любые object.

То есть можно заполнять их строками, целыми числами, классами, если они были созданы как объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...