Partilhar via


Tutorial: Aprenda a gerir coleções de dados usando a Lista<T> em C#

Este tutorial introdutório fornece uma visão geral da linguagem C# e dos fundamentos da classe System.Collections.Generic.List<T>.

Este tutorial ensina-te C#. Escreves código C# e vês os resultados da compilação e execução desse código. Contém uma série de lições que criam, modificam e exploram coleções. Você trabalha principalmente com a classe List<T>.

Neste tutorial, você:

  • Lançar um Codespace no GitHub com um ambiente de desenvolvimento C#.
  • Crie diferentes tipos de listas.
  • Modificar o conteúdo da lista.
  • Pesquise e ordene listas.

Pré-requisitos

Deve ter um dos seguintes:

Um exemplo de lista básica

Para iniciar um GitHub Codespace com o ambiente de tutorial, abra uma janela do navegador para o repositório tutorial codespace. Selecione o botão verde de Código e o separador Codespaces . Depois seleciona o + sinal para criar um novo Codespace usando este ambiente. Se completaste outros tutoriais desta série, podes abrir esse espaço de código em vez de criares um novo.

  1. Quando o seu espaço de código carregar, crie um novo ficheiro na pasta tutoriais chamado lists.cs.

  2. Abra o seu novo ficheiro.

  3. Digite ou copie o seguinte código para lists.cs:

    List<string> names = ["<name>", "Ana", "Felipe"];
    foreach (var name in names)
    {
        Console.WriteLine($"Hello {name.ToUpper()}!");
    }
    
  4. Execute o código escrevendo o seguinte comando na janela do terminal:

    cd tutorials
    dotnet lists.cs
    

Criavas uma lista de cadeias de cordas, adicionavas três nomes a essa lista e imprimias os nomes em maiúsculas. Você está usando conceitos que aprendeu em tutoriais anteriores para percorrer a lista.

O código para exibir nomes faz uso do recurso de interpolação de cadeia . Ao preceder um string com o caractere $, você pode incorporar o código C# na declaração de cadeia de caracteres. A cadeia de caracteres real substitui esse código C# pelo valor que ele gera. Neste exemplo, ele substitui o {name.ToUpper()} por cada nome, convertido em letras maiúsculas, ao invocar o método String.ToUpper.

Vamos continuar explorando.

Modificar o conteúdo da lista

A coleção que você criou usa o tipo List<T>. Este tipo armazena sequências de elementos. Você especifica o tipo dos elementos entre os colchetes angulares.

Um aspeto importante desse tipo de List<T> é que ele pode crescer ou encolher, permitindo que você adicione ou remova elementos. Você pode ver os resultados ao modificar o conteúdo após exibi-lo.

  1. Adicione o seguinte código após o código que você já escreveu (o 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. Você removeu um também. A saída deste bloco de código mostra o conteúdo inicial e, em seguida, imprime uma linha em branco e o novo conteúdo.

  2. O List<T> permite que se faça referência a itens individuais por índice também. Você acessa itens usando os tokens [ e ]. Adicione o seguinte código depois do que você já escreveu e experimente:

    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 final da lista. Pode verificar o tamanho da lista utilizando a Count propriedade.

  3. Adicione o seguinte código:

    Console.WriteLine($"The list has {names.Count} people in it");
    

    Escreve dotnet lists.cs novamente na janela do terminal para ver os resultados. Em C#, os índices começam em 0, portanto, o maior índice válido é um a menos do que o número de itens na lista.

Para obter mais informações sobre índices, consulte o artigo Explorar índices e intervalos .

Pesquisar e ordenar listas

Nossos exemplos usam listas relativamente pequenas, mas seus aplicativos geralmente podem criar listas com muito mais elementos, às vezes numerando milhares. Para encontrar elementos nessas coleções maiores, você precisa pesquisar 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.

  1. Experimente para ver como funciona. Adicione o seguinte código após o que você escreveu até agora:

    var index = names.IndexOf("Felipe");
    if (index == -1)
    {
        Console.WriteLine($"When an item is not found, IndexOf returns {index}");
    }
    else
    {
        Console.WriteLine($"The name {names[index]} is at index {index}");
    }
    
    index = names.IndexOf("Not Found");
    if (index == -1)
    {
        Console.WriteLine($"When an item is not found, IndexOf returns {index}");
    }
    else
    {
        Console.WriteLine($"The name {names[index]} is at index {index}");
    }
    

    Talvez você não saiba se um item está na lista, então você deve sempre verificar o índice retornado por IndexOf. Se for -1, o item não foi encontrado.

  2. Também podes ordenar os itens da tua lista. O método Sort classifica todos os itens na lista em sua ordem normal (alfabeticamente para strings). Adicione este código e execute novamente:

    names.Sort();
    foreach (var name in names)
    {
        Console.WriteLine($"Hello {name.ToUpper()}!");
    }
    

Listas de outros tipos

Até agora, tens estado a usar o tipo string em listas. Vamos fazer um List<T> usando um tipo diferente. Vamos construir um conjunto de números.

  1. Adicione o seguinte código no final do seu ficheiro fonte:

    List<int> fibonacciNumbers = [1, 1];
    

    Esse código cria uma lista de inteiros e define os dois primeiros inteiros para o valor 1. A Sequência de Fibonacci, uma sequência de números, começa com dois 1's. Cada número de Fibonacci seguinte é encontrado tomando a soma dos dois números anteriores.

  2. 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);
    }
    
  3. Digite dotnet lists.cs a janela do terminal para ver os resultados.

Desafio

Veja se consegue juntar alguns dos conceitos desta e de lições anteriores. Expanda o que você construiu até agora com Fibonacci Numbers. Tente escrever o código para gerar os primeiros 20 números na sequência. (Como dica, o número 20 de Fibonacci é 6765.)

Inventou algo assim?

List<int> fibonacciNumbers = [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);
}

A cada iteração do ciclo, você pega os dois últimos inteiros da lista, soma-os e adiciona esse valor à lista. O ciclo repete-se até adicionares 20 itens à lista.

Concluíste o tutorial sobre listas. Você pode saber mais sobre coleções .NET nos seguintes artigos:

Recursos de limpeza

O GitHub apaga automaticamente o seu Codespace após 30 dias de inatividade. Se planeia explorar mais tutoriais nesta série, pode deixar o seu Codespace provisionado. Se estiver pronto para visitar o site .NET para descarregar o SDK .NET, pode eliminar o seu Codespace. Para eliminar o seu Codespace, abra uma janela do navegador e navegue até aos seus Codespaces. Deves ver uma lista dos teus codespaces na janela. Selecione os três pontos (...) na entrada para o espaço de código do tutorial de aprendizado e selecione apagar.

Próximo passo