Rever

Compreendendo tipos genéricos em Delphi

Compreendendo tipos genéricos em Delphi

Os genéricos, uma adição poderosa ao Delphi, foram introduzidos no Delphi 2009 como um novo recurso de idioma. Tipos genéricos ou genéricos (também conhecidos como tipos parametrizados), permite definir classes que não definem especificamente o tipo de determinados membros de dados.

Como exemplo, em vez de usar o tipo TObjectList para ter uma lista de qualquer tipo de objeto, no Delphi 2009, o Genéricos. A unidade de coleções define um TObjectList mais fortemente tipado.

Aqui está uma lista de artigos explicando tipos genéricos no Delphi com exemplos de uso:

O que e por que e como nos genéricos em Delphi

Genéricos com Delphi 2009 Win32

Às vezes, os genéricos são chamados de parâmetros genéricos, um nome que permite apresentá-los um pouco melhor. Ao contrário de um parâmetro de função (argumento), que possui um valor, um parâmetro genérico é um tipo. E parametriza uma classe, uma interface, um registro ou, menos frequentemente, um método ... Com, como bônus, rotinas anônimas e referências de rotina

Tutorial Delphi Generics

Delphi tList, tStringList, tObjectlist ou tCollection podem ser usados ​​para construir contêineres especializados, mas requerem a conversão de tipos. Com os genéricos, a conversão é evitada e o compilador pode detectar erros de tipo mais cedo.

Usando genéricos em Delphi

Depois de escrever uma classe usando parâmetros de tipo genérico (genéricos), você poderá usá-la com qualquer tipo e o tipo que escolher com um determinado uso dessa classe substituirá os tipos genéricos usados ​​quando você criou a classe.

Interfaces genéricas em Delphi

A maioria dos exemplos que eu vi de Generics no Delphi usa classes que contêm um tipo genérico. No entanto, enquanto trabalhava em um projeto pessoal, decidi que queria uma Interface contendo um tipo genérico.

Exemplo de tipo genérico simples

Veja como definir uma classe genérica simples:

tipo
TGenericContainer = classe
Valor: T;
fim;

Com a seguinte definição, veja como usar um contêiner genérico de número inteiro e string:

var
genericInt: TGenericContainer;
genericStr: TGenericContainer;
início
genericInt: = TGenericContainer.Create;
genericInt.Value: = 2009; // apenas números inteiros
genericInt.Free;
genericStr: = TGenericContainer.Create;
genericStr.Value: = 'Delphi Generics'; // apenas strings
genericStr.Free;
fim;

O exemplo acima apenas arranha a superfície do uso de Genéricos em Delphi (embora não explique nada - mas os artigos acima possuem tudo o que você deseja saber!).

Para mim, os genéricos foram a razão de mudar do Delphi 7/2007 para o Delphi 2009 (e mais recente).