C# - Usando Generics (revisitado) - II
Neste artigo vamos rever o conceito de Generics e aplicar esses conceitos criando uma classe genérica. |
Continuando o assunto do artigo anterior vamos criar uma classe genérica mais elaborada para mostrar os recursos do Generics.
Vamos criar uma lista de itens genérica e definir métodos para poder incluir e obter itens da lista.
Recursos Usados:
Criando seu próprio tipo Genérico
Abra o
VS
2017 Community e crie um projeto do tipo Console Application.
Vamos definir uma classe Genérica ListaItens<T> com 3 métodos
conforme o código abaixo:
using System;
namespace cshp_Generics
{
public class ListaItens<T>
{
private T[] itens;
public ListaItens()
{
itens = new T[0];
}
public T GetItem(int index)
{
return itens[index];
}
public void Add(T novoItem)
{
T[] novosItens = new T[itens.Length + 1];
for (int index = 0; index < itens.Length; index++)
novosItens[index] = itens[index];
novosItens[novosItens.Length - 1] = novoItem;
itens = novosItens;
}
public void PrintItens()
{
foreach(T t in itens)
{
Console.WriteLine(t);
}
}
}
}
|
Nesta classe criamos um array privado chamado itens onde o tipo do array é T - nosso tipo genérico. Assim sempre que alguém usar a nossa classe, terá que escolher o tipo que deseja usar.
Se alguém usar o tipo ListaItens<int> teremos um array de inteiros, se usar o tipo ListItens<string> teremos um array de strings.
No construtor da classe definimos que nosso array terá zero elementos a iniciar.
No método GetItem() retorna um item particular da lista. Observe que o tipo retornado é do tipo T, o nosso tipo. Se usarmos int vai retornar int, se usarmos double, vai retornar double, etc.
O método Add() precisa aumentar o tamanho do array ao receber novos itens, e aqui novamente usamos o nosso tipo T como um parâmetro de entrada para o método, assim estamos aptos a adicionar somente itens do tipo que foi definido na lista.
O método PrintItens() foi incluido apenas para listar os itens da lista.
Para ver a nossa classe funcionando vamos incluir o código abaixo no método Main():
class Program
{
static void Main(string[] args)
{
ListaItens<string> t1 = new ListaItens<string>();
t1.Add("tarefa 1");
t1.Add("tarefa 2");
t1.Add("tarefa 3");
t1.PrintItens();
WriteLine($"Item de indice 1: {t1.GetItem(1)}");
ReadLine();
}
}
|
Faltou implementar o método para remover itens, para ordenar itens, etc., mas criamos a classe apenas para mostrar como o Generics funciona pois já temos tudo isso pronto nas coleções Genéricas : List<T>, Collection<T>, IEnumerable<T>, IList<T>, ICollection<T>, LinkedList<T>, etc.
Veja os links abaixo que mostra como usar as coleções genéricas:
Dessa forma, pra que reinventar a roda ???
"Havendo Deus antigamente falado muitas
vezes, e de muitas maneiras, aos pais, pelos profetas, a nós falou-nos nestes
últimos dias no Filho (Jesus)"
Hebreus 1:1
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Xamarim - Desenvolvimento Multiplataforma com C# ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Criando sua primeira ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Anatomia da aplicação - Macoratti.net
https://developer.xamarin.com/api/type/Android.Widget.ListView/
https://developer.xamarin.com/api/property/Android.Widget.ListView.Adapter/
https://developer.xamarin.com/guides/xamarin-forms/user-interface/animation/