Эффективное использование обобщенного списка TList<T> в Delphi для объектов собственного класса
Вопрос, заданный пользователем, касается возможности использования обобщенного списка в Delphi для работы с объектами собственного класса без необходимости явного приведения типов. Это возможно благодаря использованию обобщенного списка TList<T> из модуля System.Generics.Collections, который позволяет работать с объектами, сохраняя при этом доступ к стандартным функциям, таким как сортировка и поиск.
Использование TList<T> для собственных классов
Для начала, давайте рассмотрим, как можно создать собственный класс и добавить его экземпляры в обобщенный список. В качестве примера возьмем класс TMyClass, который наследуется от TObject.
Type TMyClass = class(TObject)
stuff: string;
// Другие поля и методы класса
end;
Теперь создадим обобщенный список TList<TMyClass> и добавим в него экземпляры класса TMyClass.
var
things: TList<TMyClass>;
begin
things := TList<TMyClass>.Create;
things.Add(TMyClass.Create);
// Доступ к полям класса осуществляется напрямую
things[0].Stuff := 'Пример данных';
end;
Сортировка списка
Для сортировки списка TList<T> необходимо реализовать интерфейс IComparer<T>. Вот пример функции сравнения для использования с TList<TMyClass>:
Type
TMyComparer = class(TInterfacedObject, IComparer<TMyClass>)
public
function Compare(const Left, Right: TMyClass): Integer; static; override;
end;
{ TMyComparer }
function TMyComparer.Compare(const Left, Right: TMyClass): Integer;
begin
Result := CompareText(Left.Stuff, Right.Stuff);
end;
Теперь, используя реализованный сравнитель, можно отсортировать список:
var
comparer: TMyComparer;
begin
comparer := TMyComparer.Create;
things.Sort(TComparer);
comparer.Free;
end;
Заключение
Использование обобщенного списка TList<T> в Delphi позволяет работать с объектами собственного класса напрямую, без необходимости приведения типов, что упрощает код и повышает его читаемость. При этом, для использования функций сортировки и поиска, необходимо реализовать соответствующие интерфейсы сравнения.
Пример кода выше демонстрирует, как можно создать собственный класс, добавить его экземпляры в обобщенный список, и реализовать функцию сравнения для сортировки списка. Это основы эффективного использования обобщенных списков в Delphi для объектов собственного класса.
Пример эффективного использования обобщенного списка `TList` в Delphi для работы с объектами собственного класса, включая сортировку и прямой доступ к их свойствам.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.