O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Listas - C#

Iniciado por MayLeone, 14/11/2017 às 11:55


O que são listas?
Se você leu a aula sobre arrays, você vai se familiarizar com as listas rapidamente, pois são estruturas muito similares em C#.
Lista ou List, é mais um mecanismo de coleções que temos em linguagem de programação, onde nos permite acessar e ler objetos tipados e também valores, inseridos dentro dela.
Assim como arrays, as listas também possuem propriedades e métodos que podem auxiliar em sua manipulação ou leitura, e um índice que determina onde cada elemento se encontra dentro da mesma.
Em termos de comparações, uma lista está muito mais próxima a um vetor do que uma matriz, pois possui apenas um índice de acesso, porém, uma de suas principais características é poder se reajustar ao tamanho do seu conteúdo inserido.

Como definir uma lista?
A definição de listas é muito similar ao de vetores,  porém, você precisa especificar que o que você está criando é uma lista de fato, ao incluir a palavra "List" no início de sua definição.
Você também precisa especificar o tipo de conteúdo que será armazenado na lista, só que diferente das variáveis ou arrays, o tipo é inserido dentro destes limitadores: <>.
Uma lista precisa de um nome para ser tido como referência de acesso e leitura, e assim como arrays precisa de uma instanciação.
Veja como definir uma lista de strings, comparando-se à definição de um vetor de mesmo tipo:



Perceba que normalmente precisamos definir um tamanho para arrays, ou seja, quantos elementos ela poderá armazenar. No caso do exemplo, serão 10.
Mas veja que na lista não precisamos especificar este tamanho. Essa é a grande diferença (e também "vantagem") que temos entre as listas e arrays. Enquanto num array normalmente você precise definir seu tamanho, as listas não tem essa necessidade, mesmo porque, como já dito, elas se reajustam de acordo com a quantidade de elementos que você irá inserir.

Como adicionar valores em uma lista?
Para adicionar algum conteúdo em sua lista, você deve referenciá-la, ou seja, especificar seu nome, e utilizar um método chamado "Add". Através deste comando, você pode adicionar um valor dentro da sua lista, sem se preocupar com seu índice. Veja um exemplo:



Você pode ler um valor da lista utilizando o mesmo artifício que faz com arrays: Referenciar a lista que deseja manipular e especificar seu índice através dos colchetes (Os índices de listas também iniciam em zero!)



Perceba que se você debugar o código, o valor de saída exibido em console será "Mayara", que é o elemento do índice 1 na lista "nomesLista".

Também é possível alimentar a lista de forma dinâmica através de laços de repetições, como neste exemplo, onde o usuário deve informar o nome de funcionários até que a letra 'N' seja digitada:



Note que como estamos utilizando o laço "while", a quantidade de vezes que esta repetição irá executar é variável, dependendo da vontade do usuário. Por conta disso, é possível notar que independentemente da quantidade de vezes que o usuário digitar um nome de funcionário, a lista vai se ajustar à essa quantidade de elementos inseridos.
Para saber quantos elementos temos dentro de uma lista (ou seja, seu tamanho atual), utilize o método "Count":



O que será exibido será isto:



Iteração com laços:

Também como arrays, é possível realizar uma iteração dinâmica entre listas e laços, tanto para ler seu conteúdo, quanto para manipulá-los.

Seguindo o exemplo da lista de funcionários, podemos agora exibir o conteúdo dessa lista através dos laços de repetições "for" e também "foreach", veja como fazer de ambas maneiras:





O resultado em console será o mesmo, por exemplo:



Checar valores ou removê-los:
Lembra-se que eu disse que as listas possuem propriedades e métodos interessantes que podem ser executados em conjunto? Pois então, um deles é o método "Contains", que verifica se determinado valor existe em sua lista:



No exemplo acima, eu fiz uma iteração entre o laço for e a lista, adicionando à ela os incrementos do contador da repetição, ou seja, dentro dessa lista temos números de zero à 100.
Depois disso, eu desejo verificar se na lista contém o valor 200.
A saída em console é esta:



Essa mensagem é exibida porque na lista, como já dito, temos valores apenas de zero à 100, o valor 200 não se encontra, e na condição estamos verificando se este valor existe na lista, e como não existe, ele vai executar o "else".
Tente agora alterar o limite do laço de 100 para 500, por exemplo e teste novamente o código. A saída agora é esta:

Spoiler
[close]

Você pode também remover valores de sua lista, basta utilizar o método "Remove":



Note que foi criada uma lista do tipo "char" que inicia com três valores: "A", "B" e "C", depois eu realizo uma iteração com o laço para exibir esses conteúdos e o índice onde eles estão.

Após isso eu removo o valor "A" da lista e novamente exibo os valores dentro da lista, veja que interessante que ocorre com seus índices:



Veja que inicialmente o caractere "A" se encontrava no índice 0 da lista, e após sua remoção, quem acaba ocupando esta posição no índice seria o seu sucessor, ou seja, "B".
Aqui está mais uma vez provado que a lista se ajusta de acordo com a quantidade de elementos inseridos a ele, tanto em relação a adições quanto em relação a remoções.

Para limpar uma lista por completo, ou seja, eliminar TODOS os elementos da mesma, você pode utilizar o método "Clear()".

As listas são mecanismos muito interessante e excelentes de coleções em C#, portanto possuem diversos métodos e propriedades inteligentes e ótimas. Para ter acesso a todas elas, visite o site oficial da Microsoft sobre listas, onde cada método e propriedade das mesmas são explicados: https://msdn.microsoft.com/pt-br/library/6sh2ey19(v=vs.110).aspx

Final:
É isso, então! Aqui você aprende o básico sobre listas! Espero que tenham gostado e acima de tudo, que tenham entendido o conteúdo.
Aqui no blog temos vários exemplos de como utilizar as listas e suas propriedades em aplicações práticas! Não deixe de treinar!

Ainda não baixei o Express, mas adianto a aula pelo Notepad++ mesmo.  :ded:


Mais uma das boas. A dúvida que apareceu no início - manipular o conteúdo das listas - tu resolveu, então tudo certo. Só não achei um link para cadastro de newsletter no seu blog - caso tenha.

14/11/2017 às 14:14 #2 Última edição: 14/11/2017 às 14:16 por Alisson
Excelente aula, May! Uma explicação de fácil entendimento (é realmente complicado explicar C#).
Se me permite expandir a explicação:
Spoiler

Para quem não estiver vendo as Listas no Intellisense (a janelinha que abre quando você digita), tenha a certeza de incluir: using System.Collections.Generic.
Se for de seu desejo, você pode definir a capacidade de uma Lista dentro dos (), ex: List<int> numeros = new List<int>(12);
Isso é especialmente útil quando você quer garantir que a lista possua um limite fixo (embora Arrays sejam melhores nesse caso).
[close]

Corvo, enquanto não baixa o Express, você pode usar o Repl.it para realizar testes online. Ele quebra bastante o galho quando você precisa testar um código e não possui acesso a uma IDE, mas não sei se seria de utilidade na hora de lidar com arquivos.

Espero ver mais aulas, May :)