Generics, ett kraftfullt tillägg till Delphi, introducerades i Delphi 2009 som en ny språkfunktion. Generiska eller generiska typer (även känd som parametriserade typer), låter dig definiera klasser som inte specifikt definierar typen av vissa datamedlemmar.
I stället för att använda TObjectList-typen för att ha en lista över objekttyper, från Delphi 2009, Generics. Samlingsenheten definierar en starkare TObjectList.
Här är en lista med artiklar som förklarar generiska typer i Delphi med användningsexempel:
Generiker kallas ibland generiska parametrar, ett namn som gör det möjligt att introducera dem något bättre. Till skillnad från en funktionsparameter (argument), som har ett värde, är en generisk parameter en typ. Och det parametrar en klass, ett gränssnitt, en post eller, mindre ofta, en metod ... Med, som en bonus, anonyma rutiner och rutinreferenser
Delphi tList, tStringList, tObjectlist eller tCollection kan användas för att bygga specialbehållare, men kräver typkasting. Med Generics undviks gjutning och kompilatorn kan upptäcka typfel förr.
När du har skrivit en klass med parametrar för generisk typ (generik) kan du använda den klassen med vilken typ som helst och den typ du väljer att använda med en given användning av den klassen ersätter de generiska typerna du använde när du skapade klassen.
De flesta exempel jag har sett på Generics i Delphi använder klasser som innehåller en generisk typ. Men medan jag arbetade på ett personligt projekt, bestämde jag mig för att jag ville ha ett gränssnitt som innehåller en generisk typ.
Så här definierar du en enkel generisk klass:
typ
TGenericContainer = klass
Värde: T;
slutet;
Så här använder du en helhet med en heltal och strängar med följande definition:
var
genericInt: TGenericContainer;
genericStr: TGenericContainer;
Börja
genericInt: = TGenericContainer.Create;
genericInt.Value: = 2009; // endast heltal
genericInt.Free;
genericStr: = TGenericContainer.Create;
genericStr.Value: = 'Delphi Generics'; // endast strängar
genericStr.Free;
slutet;
Ovanstående exempel repor bara ytan med att använda Generics i Delphi (förklarar dock ingenting - men ovanstående artiklar har allt du vill veta!).
För mig var generika anledningen att flytta från Delphi 7/2007 till Delphi 2009 (och nyare).