Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda O Que São Listas? | Estruturas de Dados e Manipulação de Arquivos
C# Além do Básico

bookO Que São Listas?

Prerequisites
Pré-requisitos

Imagine uma situação em que seja necessário armazenar os nomes de todos os alunos matriculados em um determinado curso. A primeira solução que podemos propor é criar um Array:

index.cs

index.cs

copy
123456
using System; class Program { string[] studentNames = new string[50]; }

No entanto, se em algum momento houver mais de 50 alunos, não será possível armazenar seus nomes. Da mesma forma, em uma situação com menos de 50 alunos, os espaços não ocupados no array representarão desperdício de memória – isso se torna um problema especialmente em arrays grandes.

Aqui é necessário uma nova estrutura que possa armazenar uma quantidade variável de elementos. Felizmente, tal estrutura já existe e é chamada de List.

Lists são muito semelhantes a Arrays, porém o número de elementos armazenados em uma lista pode ser alterado.

Note
Nota

É possível modificar elementos existentes em um Array, porém não é possível adicionar novas entradas a ele.

A seguir está a sintaxe para declarar uma lista vazia:

Com essa sintaxe, é possível criar uma lista para armazenar os nomes dos estudantes:

index.cs

index.cs

copy
12345678910
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); } }

É importante observar que é necessário importar o módulo Generic para poder utilizar Listas.

index.cs

index.cs

copy
1
using System.Collections.Generic;

Basta adicionar esta linha abaixo de using System; para importar o módulo necessário.

Método Add()

Podemos adicionar elementos a uma lista utilizando o método Add:

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); } }

O código acima adicionará quatro elementos à lista students.

Assim como um Array do tipo string só pode conter elementos do tipo string, uma lista do tipo string só pode aceitar elementos do tipo string.

Indexação

O primeiro elemento é Anna, portanto terá o índice 0, enquanto Laura terá o índice 1 e assim por diante. Os elementos de uma lista podem ser acessados por indexação, assim como em um array:

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); } }

Método Count()

É possível obter o tamanho de uma lista utilizando o atributo Count:

index.cs

index.cs

copy
123456789101112131415161718
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); Console.WriteLine(students.Count); } }

Comprimento Dinâmico

Observe que o comprimento de uma lista é dinâmico (mutável), portanto, ele muda à medida que adicionamos elementos:

index.cs

index.cs

copy
1234567891011121314151617181920
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); Console.WriteLine(students.Count); students.Add("Anna"); Console.WriteLine(students.Count); students.Add("Laura"); Console.WriteLine(students.Count); students.Add("Jacob"); Console.WriteLine(students.Count); students.Add("Aron"); Console.WriteLine(students.Count); } }

Inicialização

Também é possível inicializar uma lista com alguns elementos utilizando a seguinte sintaxe:

List<dataType> listName = new List<dataType>{ element1, element2, … };
index.cs

index.cs

copy
12345678910111213141516
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; // It is still possible to add additional elements after initialization students.Add("Markus"); Console.WriteLine(students.Count); Console.WriteLine(students[4]); } }

Percorrendo listas

Percorrer uma lista de forma semelhante à iteração em arrays

Utilizando um for-loop

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; for (int i = 0; i < students.Count; i++) { Console.WriteLine(students[i]); } } }

Usando um loop foreach

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; foreach (string studentName in students) { Console.WriteLine(studentName); } } }
Note
Dica:

Para tornar a sintaxe de declaração mais curta, também é possível utilizar a declaração implícita. Para relembrar, uma declaração explícita ocorre quando o tipo de dado é especificado durante a declaração da variável.

index.cs

index.cs

copy
1
float number = 7.9f;

Por outro lado, na declaração implícita pode-se simplesmente utilizar a palavra-chave var e o compilador infere automaticamente o tipo de dado da variável de acordo com o valor atribuído:

index.cs

index.cs

copy
1
var number = 7.9f;

Também é possível utilizar declaração implícita ao declarar listas:

index.cs

index.cs

copy
1
var numbers = new List<int> { 1, 2, 3, 4, 5 };

1. Qual será a saída do seguinte código:

2. Qual módulo deve ser importado para utilizar listas?

3. Qual método é utilizado para obter o tamanho (comprimento) de uma lista?

question mark

Qual será a saída do seguinte código:

Select the correct answer

question mark

Qual módulo deve ser importado para utilizar listas?

Select the correct answer

question mark

Qual método é utilizado para obter o tamanho (comprimento) de uma lista?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

What is the difference between an array and a list in C#?

Can you show an example of how to add elements to a list?

How do I access elements in a list using indexing?

Awesome!

Completion rate improved to 2.04

bookO Que São Listas?

Deslize para mostrar o menu

Prerequisites
Pré-requisitos

Imagine uma situação em que seja necessário armazenar os nomes de todos os alunos matriculados em um determinado curso. A primeira solução que podemos propor é criar um Array:

index.cs

index.cs

copy
123456
using System; class Program { string[] studentNames = new string[50]; }

No entanto, se em algum momento houver mais de 50 alunos, não será possível armazenar seus nomes. Da mesma forma, em uma situação com menos de 50 alunos, os espaços não ocupados no array representarão desperdício de memória – isso se torna um problema especialmente em arrays grandes.

Aqui é necessário uma nova estrutura que possa armazenar uma quantidade variável de elementos. Felizmente, tal estrutura já existe e é chamada de List.

Lists são muito semelhantes a Arrays, porém o número de elementos armazenados em uma lista pode ser alterado.

Note
Nota

É possível modificar elementos existentes em um Array, porém não é possível adicionar novas entradas a ele.

A seguir está a sintaxe para declarar uma lista vazia:

Com essa sintaxe, é possível criar uma lista para armazenar os nomes dos estudantes:

index.cs

index.cs

copy
12345678910
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); } }

É importante observar que é necessário importar o módulo Generic para poder utilizar Listas.

index.cs

index.cs

copy
1
using System.Collections.Generic;

Basta adicionar esta linha abaixo de using System; para importar o módulo necessário.

Método Add()

Podemos adicionar elementos a uma lista utilizando o método Add:

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); } }

O código acima adicionará quatro elementos à lista students.

Assim como um Array do tipo string só pode conter elementos do tipo string, uma lista do tipo string só pode aceitar elementos do tipo string.

Indexação

O primeiro elemento é Anna, portanto terá o índice 0, enquanto Laura terá o índice 1 e assim por diante. Os elementos de uma lista podem ser acessados por indexação, assim como em um array:

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); } }

Método Count()

É possível obter o tamanho de uma lista utilizando o atributo Count:

index.cs

index.cs

copy
123456789101112131415161718
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); Console.WriteLine(students.Count); } }

Comprimento Dinâmico

Observe que o comprimento de uma lista é dinâmico (mutável), portanto, ele muda à medida que adicionamos elementos:

index.cs

index.cs

copy
1234567891011121314151617181920
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); Console.WriteLine(students.Count); students.Add("Anna"); Console.WriteLine(students.Count); students.Add("Laura"); Console.WriteLine(students.Count); students.Add("Jacob"); Console.WriteLine(students.Count); students.Add("Aron"); Console.WriteLine(students.Count); } }

Inicialização

Também é possível inicializar uma lista com alguns elementos utilizando a seguinte sintaxe:

List<dataType> listName = new List<dataType>{ element1, element2, … };
index.cs

index.cs

copy
12345678910111213141516
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; // It is still possible to add additional elements after initialization students.Add("Markus"); Console.WriteLine(students.Count); Console.WriteLine(students[4]); } }

Percorrendo listas

Percorrer uma lista de forma semelhante à iteração em arrays

Utilizando um for-loop

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; for (int i = 0; i < students.Count; i++) { Console.WriteLine(students[i]); } } }

Usando um loop foreach

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; foreach (string studentName in students) { Console.WriteLine(studentName); } } }
Note
Dica:

Para tornar a sintaxe de declaração mais curta, também é possível utilizar a declaração implícita. Para relembrar, uma declaração explícita ocorre quando o tipo de dado é especificado durante a declaração da variável.

index.cs

index.cs

copy
1
float number = 7.9f;

Por outro lado, na declaração implícita pode-se simplesmente utilizar a palavra-chave var e o compilador infere automaticamente o tipo de dado da variável de acordo com o valor atribuído:

index.cs

index.cs

copy
1
var number = 7.9f;

Também é possível utilizar declaração implícita ao declarar listas:

index.cs

index.cs

copy
1
var numbers = new List<int> { 1, 2, 3, 4, 5 };

1. Qual será a saída do seguinte código:

2. Qual módulo deve ser importado para utilizar listas?

3. Qual método é utilizado para obter o tamanho (comprimento) de uma lista?

question mark

Qual será a saída do seguinte código:

Select the correct answer

question mark

Qual módulo deve ser importado para utilizar listas?

Select the correct answer

question mark

Qual método é utilizado para obter o tamanho (comprimento) de uma lista?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 1
some-alt