Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

C# - Tipos genéricos

A linguagem C# introduziu a funcionalidade de tipos genéricos com a versão 2.0, permitindo que desenvolvedores escrevam código mais flexível e reutilizável. Os tipos genéricos permitem que você escreva uma Classe ou método que funciona com qualquer tipo de dados, em vez de estar preso a um tipo específico. Isso permite que o código seja escrito de forma mais genérica, o que aumenta a sua reutilização.


Para entender melhor, vamos dar um exemplo de uma classe simples para gerenciar uma lista de objetos. Sem o uso de tipos genéricos, seria necessário escrever uma classe para cada tipo de objeto que desejássemos gerenciar. Por exemplo, uma classe "ListaDeInteiros", outra "ListaDeStrings", e assim por diante. Com o uso de tipos genéricos, é possível escrever uma única classe "Lista" onde T é o tipo genérico. Isso significa que a classe pode ser usada para gerenciar uma lista de qualquer tipo de objeto, sem precisar escrever uma classe específica para cada tipo.


A sintaxe para criar uma classe genérica é simples, basta adicionar um identificador dentro dos sinais de menor/maior o nome da classe, como no exemplo abaixo:

    
class Lista {
    // ...
}

E para utilizar essa classe, é necessário especificar o tipo que deseja utilizar, como no exemplo abaixo:

    
Lista minhaListaDeInteiros = new Lista();
Lista minhaListaDeStrings = new Lista();

Além de classes, também é possível criar métodos genéricos. A sintaxe é semelhante, basta adicionar um identificador genérico dentro dos sinais de menor/maior  após o nome do método, como no exemplo abaixo:

    
class MinhaClasse {
    public T MetodoGenerico(T valor) {
        // ...
    }
}

Os tipos genéricos também possuem restrições, é possível restringir o tipo genérico a uma classe base ou interface específica, ou especificar que o tipo genérico deve ter um construtor sem parâmetros.


Mais exemplos

Criando uma classe genérica de pilha (Stack) que pode armazenar qualquer tipo de dado:

    
class Stack
{
    private T[] _items;
    private int _count;

    public void Push(T item)
    {
        _items[_count++] = item;
    }

    public T Pop()
    {
        return _items[--_count];
    }
}

Usando o tipo genérico "T" para especificar o tipo de dado de uma lista:

    
List numbers = new List();
numbers.Add(1);
numbers.Add(2);

Criando uma interface genérica para comparação de objetos:

    
interface IComparer
{
    int Compare(T x, T y);
}
>

Usando tipo genérico para definir métodos genéricos

    
void Swap(ref T a, ref T b)
{
    T temp = a;
    a = b;
    b = temp;
}

Usando tipos genéricos em expressões lambda e delegações

    
Func filter = x => x > 0;

Conclusão

O uso de tipos genéricos é amplamente utilizado pela comunidade e oferece um grande poder de abstração e reutilização para nosso trabalho, utilize sem moderação ;-]

  • Documentação
  • Na Wikipédia
  • Generics


This post first appeared on PROGRAMERO, please read the originial post: here

Share the post

C# - Tipos genéricos

×

Subscribe to Programero

Get updates delivered right to your inbox!

Thank you for your subscription

×