Listas em C#
List é uma coleção de objetos que mantém a ordem em que eles foram adicionados. Qual estrutura de dados estamos usando por trás de uma lista? Quando utilizar? É o que veremos aqui com códigos direto em C#.
Fomos chamados para resolver o problema de uma loja que está com dificuldade de armazenar os dados de seus produtos, pois eles já tem um sistema em produção. Porém ele não engloba a parte de armazenamento de produtos
Por conta disso, acabam tendo dados perdidos ou incorretos como, por exemplo, a quantidade de produtos no estoque não bate com as anotações. Analisando todo o contexto, decidimos utilizar C# para ter compatibilidade com o sistema que a empresa já tem.
A primeira coisa que vamos fazer é olhar como os dados estão armazenados do caderno.
Nome | Quantidade
------------------
Maçã | 100
------------------
Abacaxi | 50
------------------
Quando olhamos esses dados pensamos: O que podemos utilizar para armazenar isto?
Assim como nas anotações, podemos utilizar um recurso parecido com essa tabela que, no caso do C#, seriam as listas. Mas por onde devemos começar?
Começando a implementação
Poderíamos começar criando uma aplicação console e analisando o que sabemos. No caderno tem as propriedades: Nome e Quantidade. Então vamos partir do ponto que temos que criar uma classe onde tenha os dois atributos juntos.
Qual nome devemos dar para esta classe? Um bom nome seria Produto, pois, estamos deixando claro o que a classe representa.
public class Produto
Esta classe vai ter que ter os atributos de nome e quantidade, com seus respectivos getters e setters.
public class Produto{
public int Quantidade { get; set; }
public string Nome { get; set; }
}
Com a nossa classe criada vamos começar a trabalhar com a listas, no nosso Arquivo Program.cs.
Como queremos trabalhar com listas vamos primeiro criar uma lista de produtos para conseguir armazenar da mesma forma que estava no caderno.
List<Produto> listaProdutos = new List<Produto>
Com esta lista criada, precisamos colocar elementos dentro dela para ver se está funcionando da melhor maneira possível, mas como podemos adicionar elementos a essa lista?
Temos que instanciar o Produto e adicionar valores a cada atributo para adicionar a lista
Produto produto1 = new Produto();
produto1.Nome = “Maca”;
produto1.Quantidade = 100;
Bem agora só falta adicionar na lista para fazer isto temos que chamar o método add dela.
listaProdutos.add(produto1);
Temos que mostrar os valores que estão na lista, e como vamos fazer isto?
Podemos utilizar o foreach para percorrer a lista a mostrar o valores que estão contidos na lista. Vamos precisar falar que queremos que um produto que está em lista fazendo.
foreach(Produto produto in listaProdutos){
Console.WriteLine(produto.Nome);
}
Alterando lista
Queremos além disso alterar os elementos que estão dentro desta lista, pois, escrevemos maçã de forma errada, está escrito maca e não é desta forma que se escreve, mas para alterar os dados, podemos fazer de qual maneira?
Quando criamos uma lista, ela tem uma coisa chamada índice, este índice é a numeração que está dentro da lista ou seja sempre que criamos algum item dentro da lista, ele vai ter um índice.
Vamos então fazer esta alteração a partir do índice, onde vamos mudar maca para maçã, primeiro vamos pegar a nossa lista que contém apenas um índice e mudar o nome que esta contido dentro da lista.
listaProdutos[0].Nome = "Maçã";
listaProdutos[0].Quantidade = 12;
Com isso mudamos o nome que está na lista, mas precisamos ver está alteração foi bem sucedida. Então vamos percorrer a lista novamente e mostrar os valores que estão nela.
foreach(Produto produto in listaProdutos){
Console.WriteLine(produto.Nome);
}
Após isto vamos fazer a análise do itens que estão no caderno, mas descobrimos que pararam de vender maçã nesta loja. Então vamos ter que remover este item da nossa lista, mas como podemos fazer isto?
Removendo item da lista
Para fazer a remoção temos que duas maneira para se fazer isto, podemos remover pelo índice ou podemos remover o produto direto. Então vamos mostrar das duas maneiras.
Vamos começar adicionando mais um item na nossa lista para conseguir demonstrar dos dois modos.
Produto produto2 = new Produto();
produto2.Nome = “Banana”;
produto2.Quantidade = 100;
listaProdutos.add(produto2);
Com um novo item adicionado na nossa lista, vamos pensar de qual maneira nós já conhecemos? Bem nós já conhecemos como os índices funcionam. Então vamos começar removendo desta maneira, passando o índice que está na lista como parâmetro.
listaProdutos.RemoveAt(0);
Aqui nós removemos pelo índice, agora vamos remover passando o produto que queremos, para fazer isto temos que utilizar a função Remove está função nos espera um dos objetos que estão dentro da lista.
listaProdutos.Remove(produto2);
Conclusão
Com isto resolvemos o problema que tivemos em relação a perda de dados ou dados errados.
Com listas aprendemos como podemos armazenar, alterar, remover.
Se ficou interessado em como o C# funciona e como você pode utilizá-lo melhor, aqui na Alura temos uma formação .NET. Nela você verá como criar aplicações, persistir os dados, dentre outras coisas.