Редактировать : Delphi 2009 включает в себя универсальный TList<T>
, я предполагаю, что он реализован с использованием array of
, как и в Delphi 2010. Это делает TList<T>
оптимальным выбором! Мой первоначальный ответ остается, потому что он объясняет, почему array of
является отличной структурой данных и почему не , используя его, доставляет много хлопот.
Ваш выбор array of Anonym
выглядит очень хорошо для меня, потому что:
- Анонимные методы - это управляемые объекты (реализованные с использованием интерфейсов). Они должны быть должным образом доработаны.
- Динамический массив сам по себе является управляемым типом, обеспечивая правильность завершения ссылок на анонимные методы.
- Универсальные контейнеры Delphi 2010 реализованы с использованием динамических массивов, поэтому они соответствуют поставленной задаче. Но убедитесь, что вы не увеличиваете свои массивы один за другим, растете кусками.
Если вы используете что-то еще для реализации, вам нужно позаботиться о завершении ссылок самостоятельно. Примеры:
- Если вы используете простые блоки памяти, вам понадобится деструктор, который намеренно устанавливает для каждого элемента значение nil (то есть: не ZeroMemory или FillChar), чтобы компилятор получил возможность генерировать код завершения.
- Записи являются управляемыми объектами, и они могут содержать ссылки на динамические методы, но они могут содержать только конечное число ссылок, если вам нужно больше, вам потребуется реализовать своего рода связанный список, а затем вам потребуется осторожно управляйте там жизненным циклом.
- Классы страдают от всех недостатков записей, и к этому они добавляют свои собственные накладные расходы.