Înțelegerea tipurilor generice din Delphi

Generics, un plus puternic la Delphi, a fost introdus în Delphi 2009 ca o caracteristică nouă a limbajului. Generice sau tipuri generice (cunoscute și ca tipuri parametrizate), vă permite să definiți clase care nu definesc în mod specific tipul anumitor membri de date.

Ca exemplu, în loc să utilizați tipul TObjectList pentru a avea o listă cu orice tip de obiect, din Delphi 2009, Generice. Unitatea de colecții definește un TObjectList mai tipar.

Iată o listă de articole care explică tipurile generice din Delphi cu exemple de utilizare:

Ce și de ce și cum despre genericii din Delphi

Generics cu Delphi 2009 Win32

Uneori, genericii sunt numiți parametri generici, un nume care permite introducerea lor oarecum mai bună. Spre deosebire de un parametru funcțional (argument), care are o valoare, un parametru generic este un tip. Și parametrizează o clasă, o interfață, o înregistrare sau, mai rar, o metodă ... Cu un bonus, rutine anonime și referințe de rutină

Delphi Generics Tutorial

Delphi tList, tStringList, tObjectlist sau tCollection pot fi utilizate pentru a construi containere specializate, dar necesită tipărire. Cu Generics, turnarea este evitată și compilatorul poate detecta erori de tip mai devreme.

Utilizarea genericilor în Delphi

După ce ați scris o clasă folosind parametrii generici de tip (generici), puteți utiliza acea clasă cu orice tip, iar tipul pe care alegeți să-l utilizați cu orice utilizare dată a clasei înlocuiește tipurile generice pe care le-ați utilizat atunci când ați creat clasa.

Interfețe generice în Delphi

Majoritatea exemplelor pe care le-am văzut despre Generics în Delphi folosesc clase care conțin un tip generic. Cu toate acestea, în timp ce lucram la un proiect personal, am decis că vreau o interfață care să conțină un tip generic.

Exemplu de tip generic simplu

Iată cum puteți defini o clasă generică simplă:

tip
TGenericContainer = clasă
Valoare: T;
Sfârșit;

Cu următoarea definiție, iată cum să folosiți un container generic întreg și șir:

var
genericInt: TGenericContainer;
genericStr: TGenericContainer;
începe
genericInt: = TGenericContainer.Create;
genericInt.Value: = 2009; // numai numere întregi
genericInt.Free;
genericStr: = TGenericContainer.Create;
genericStr.Value: = 'Delphi Generics'; // numai șiruri
genericStr.Free;
Sfârșit;

Exemplul de mai sus zgârie doar suprafața utilizării Generics în Delphi (totuși nu explică nimic - dar articolele de mai sus au tot ce vrei să știi!).

Pentru mine, generici au fost motivul pentru a trece de la Delphi 7/2007 la Delphi 2009 (și mai nou).