ArrayList <MyClass>против MyClass [26]? - PullRequest
0 голосов
/ 22 июля 2011

Мне нужно хранить 26 объектов в массиве.может быть меньше, но не больше.Будет ли arrayList занимать больше места, чем массив из 26 объектов?

Ответы [ 2 ]

3 голосов
/ 22 июля 2011

Вы задаете не тот вопрос.Вопрос о том, может ли ArrayList занимать немного больше места, чем обычный старый массив, совершенно не имеет значения.

Вопрос, на который вам действительно нужно ответить, чтобы решить, какой из них использовать, будет ли вам когда-либо нужен динамически изменяет размер массива.

Если массив будет содержать только 26 объектов за все время его жизни, то вам, вероятно, следует придерживаться простого старого массива: myArray[26].

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

Другой случай, когда вы захотите использовать ArrayList вместо простого массива, - это когда вам нужен класс, реализующийIList интерфейс .

Но имейте в виду, что класс ArrayList, вероятно, не рекомендуется использовать в более поздних версиях .NET Framework.Пространство имен System.Collections.Generic предоставляет набор универсальных классов коллекций, которые гораздо более производительны и предпочтительнее для ArrayList.В этом случае вы, вероятно, захотите использовать List<T> класс , где T - это класс объектов, которые вы хотите сохранить в указанном массиве.

0 голосов
/ 22 июля 2011

Это не может занять меньше ... Я полагаю, что это может занять больше, в зависимости от того, как они изменяют размеры.Для пояснения, если вы храните менее 26 элементов, списки массивов могут быть лучше ... Если вы храните 26, списки массивов не могут быть лучше и, вероятно, хуже.

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