Должен ли я использовать ArrayList или IList - PullRequest
6 голосов
/ 18 марта 2010

Я использую .NET Framework 1.1, и я надеюсь, что кто-нибудь может помочь мне реализовать динамический массив объектов?

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

Class CarObj
{
   public string CarName;
   public string CarYear;
}

Должен ли я использовать ArrayList или вы думаете, что было бы лучше создать класс CarList для реализации интерфейса IList? Есть ли выигрыш в производительности для одного над другим?

Ответы [ 3 ]

4 голосов
/ 18 марта 2010

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

1 голос
/ 18 марта 2010

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

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

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

0 голосов
/ 18 марта 2010

Основным преимуществом реализации собственного класса коллекции (поскольку вы застряли в 1.1) является безопасность типов; когда вы точно знаете, что ваша коллекция может содержать только CarObj экземпляров, вам не нужно приводить типы или беспокоиться об ошибках преобразования. Внутренне этот класс коллекции может использовать ArrayList для хранения объектов.

...