Criando e consumindo Generics!

Publicado: 23/05/2005 em IntoSpaces
Olá pessoal!! E aí como foi o final de semana?
Eu tirei pra assistir bons filmes e pude relembrar como Vanila Sky é maravilhoso!!!

Hoje acordei para fazer Generics e vamos então criar uma coleção genérica na prática!!

Eu não vou falar muito de teoria, porém se simplificarmos os Generics chegaremos à uma coleção que suporta qualquer tipo de dados sem a necessidade de se utilizar boxing e unboxing durante a utilização da classe.
O pessoal que vem do C++ reclama muito por ter que fazer tudo sem as famosas Templates que quebram esse galho pra eles.
Aqui entre nós em C++ os caras tem muito mais coisa pra se preocupar do que com coleções né? Fala sério ehehehe

Apesar dos Generics não fazer parte da CLS (Common Language Specification) eles são totalmente suportados pelas linguagens padrão do Visual Studio, porém não é certeza que todas as linguagens o implementarão de forma efetiva, então cuidado se você programar em COBOL .NET e quiser aproveitar classes genércias desenvolvidas em VB .NET ou C#!

Isso pode parecer meio cofuso até se implementar o código, porém, criar uma coleção que se utiliza dos Generics é mais facil que tirar doce de criança ehehe

Vejam:

using System;

using System.Collections.Generic;

using System.Text;

 

namespace eXtensible_Compiler

{

      public class XGenericCollection<X>: List<X>{}

}

Criamos aqui uma classe que herda as características da classe System.Collection.Generic.List.
Definimos que esta classe será genérica passando para ela um Tipo genérico, o <X>
Eu utilizei o X para ser o meu tipo padrão, porém poderia ser qualquer outro, sua finalidade é definir dentro da classe onde será utilizado o tipo que tomará conta da classe em tempo de execução.

para se consumir esta classe adicionamos à declaração que conhecemos a informação sobre o tipo que será trabalhado nesta instância da classe:

XGenericCollection<string> collection = new XGenericCollection<string>;

collection.Add("Shinji");

Neste caso criamos uma coleção de string, porém poderia ser qualquer outro tipo, nativo do .NET Framework ou não.

XGenericCollection<int> collection = new XGenericCollection<int>;

XGenericCollection<MuTipo> collection = new XGenericCollection<MeuTipo>;                 

Fácil não?
Com estas poucas linhas de código implementamos uma coleção completa, bem mais interessante do que as que tinhámos com o CollectionBase anteriormente.

Um detalhe importante sobre a System.Collections.Generic.List<> é que ela implementa métodos bastante interessantes, visando a maioria das operações que uma coleção pode precisar.
Gostei do método ConvertAll<>, ele converte todos os membros de nossa lista para um outro tipo, bom né?

Métodos
Alguns dos métodos implementados pela System.Collections.Generic.List<>

Quem pensa <Generics>?

Fabio Galuppo

http://br.thespoke.net/BlogReader/SingleEntry.aspx?id=4838

Juliano Carvalho

http://br.thespoke.net/MyBlog/julianocarvalho/MyBlog_Comments.aspx?ID=22667

TheSpoke Search
http://br.thespoke.net/Search/Search_Action.aspx?exact=generics

É isso aí, esta foi uma implementação simples e prática dos genérics, agora é só arregaçar as mangas e atualizar as nossas antigas coleções😉

Boa semana para todos!!

[]’s
Shinji

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s