Saiba como gerenciar coleções de dados usando o tipo de lista genérico
Este tutorial ensina C# de maneira interativa, usando seu navegador para escrever código C# e ver os resultados da compilação e da execução de seu código. Ele contém uma série de lições que criam, modificam e exploram coleções e matrizes.
Dica
Para colar um snippet de código dentro do modo de foco você deve usar o atalho de teclado (Ctrl + v ou cmd + v).
Criar listas
Execute o seguinte código na janela interativa. Selecione o botão Entrar em modo de foco. Em seguida, digite o seguinte bloco de código na janela interativa (substitua <name>
pelo seu nome) e selecione Executar:
var names = new List<string> { "<name>", "Ana", "Felipe" };
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Se você estiver executando isso em seu ambiente, deverá seguir as instruções para a versão local.
Você criou uma lista de cadeias de caracteres, adicionou três nomes a essa lista e imprimiu os nomes em MAIÚSCULAS. Você está usando conceitos que aprendeu em tutoriais anteriores para executar um loop pela lista.
O código para exibir nomes utiliza o recurso de interpolação de cadeia de caracteres. Quando você precede um string
com o caractere $
, pode inserir o código C# na declaração da cadeia de caracteres. A cadeia de caracteres real substitui esse código C# pelo valor gerado. Neste exemplo, ela substitui o {name.ToUpper()}
por cada nome, convertido em letras maiúsculas, pois você chamou o método String.ToUpper.
Vamos continuar explorando.
Modificar conteúdo da lista
A coleção que você criou usa o tipo List<T>. Esse tipo armazena sequências de elementos. Especifique o tipo dos elementos entre os colchetes.
Um aspecto importante desse tipo List<T> é que ele pode aumentar ou diminuir, permitindo que você adicione ou remova elementos. Você pode ver os resultados ao modificar o conteúdo depois que exibiu seu conteúdo. Adicione o código a seguir abaixo do código que você já escreveu (abaixo do loop que imprime o conteúdo):
Console.WriteLine();
names.Add("Maria");
names.Add("Bill");
names.Remove("Ana");
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Você adicionou mais dois nomes ao final da lista. Também removeu um. A saída desse bloco de código mostra o conteúdo inicial e, em seguida, imprime uma linha em branco e o novo conteúdo.
O List<T> também permite fazer referência a itens individuais por índice. Acesse itens usando os tokens [
e ]
. Adicione o código a seguir abaixo do código que você já escreveu e teste:
Console.WriteLine($"My name is {names[0]}.");
Console.WriteLine($"I've added {names[2]} and {names[3]} to the list.");
Você não tem permissão para acessar após o fim da lista. Você pode verificar há quanto tempo a lista está usando a propriedade Count. Adicione o seguinte código para testar:
Console.WriteLine($"The list has {names.Count} people in it");
Clique novamente em Executar para ver os resultados. Em C#, os índices começam com 0, portanto, o maior índice válido é uma unidade a menos do que o número de itens na lista.
Pesquisar e classificar listas
Nossos exemplos usam listas relativamente pequenas, mas seus aplicativos podem criar listas com muitos outros elementos, chegando, às vezes, a milhares. Para localizar elementos nessas coleções maiores, pesquise por itens diferentes na lista. O método IndexOf procura um item e retorna o índice do item. Se o item não estiver na lista, IndexOf
retornará -1
. Experimente para ver como funciona. Adicione o código a seguir abaixo do código que você escreveu até o momento:
var index = names.IndexOf("Felipe");
if (index != -1)
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
var notFound = names.IndexOf("Not Found");
Console.WriteLine($"When an item is not found, IndexOf returns {notFound}");
Talvez você não saiba se um item está na lista, portanto, sempre verifique o índice retornado por IndexOf. Se for -1
, o item não foi encontrado.
Os itens em sua lista também podem ser classificados. O método Sort classifica todos os itens na lista na ordem normal (em ordem alfabética para cadeias de caracteres). Adicione este código e execute novamente:
names.Sort();
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Listas de outros tipos
Você usou o tipo string
nas listas até o momento. Vamos fazer List<T> usar um tipo diferente. Vamos compilar um conjunto de números. Exclua o código que você escreveu até o momento e substitua-o pelo seguinte código:
var fibonacciNumbers = new List<int> {1, 1};
Isso cria uma lista de números inteiros e define os primeiros dois inteiros como o valor 1. A Sequência de Fibonacci, uma sequência de números, começa com dois 1s. Cada número Fibonacci seguinte é encontrado considerando a soma dos dois números anteriores. Adicione este código:
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
foreach(var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
Pressione Executar para ver os resultados;
Desafio
Veja se você consegue combinar alguns dos conceitos desta lição e de lições anteriores. Expanda o que você compilou até o momento com números Fibonacci. Tente escrever o código para gerar os 20 primeiros números na sequência. (Como uma dica, o vigésimo número Fibonacci é 6765.)
Desafio concluído
Você conseguiu algo semelhante a isto?
var fibonacciNumbers = new List<int> {1, 1};
while (fibonacciNumbers.Count < 20)
{
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
}
foreach(var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
Com cada iteração do loop, você está pegando os últimos dois inteiros na lista, somando-os e adicionando esse valor à lista. O loop será repetido até que você tenha adicionado 20 itens à lista.
Parabéns!
Você concluiu o tutorial interativo de lista. Este é o tutorial interativo final de introdução ao C#. Visite o site do .NET para baixar o SDK do .NET, criar um projeto em seu computador e continuar criando códigos. A seção "Próximas etapas" leva você de volta a estes tutoriais.
Saiba mais sobre as Coleções de .NET nos artigos a seguir:
Tem algum problema com essa seção? Se tiver, envie seus comentários para que possamos melhorar esta seção.