O Que São Listas?

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
123456using 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.

É 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
12345678910using 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
1using 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
123456789101112131415using 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
1234567891011121314151617using 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
123456789101112131415161718using 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
1234567891011121314151617181920using 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
12345678910111213141516using 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
123456789101112131415using 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
123456789101112131415using 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); } } }
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
1float 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
1var number = 7.9f;
Também é possível utilizar declaração implícita ao declarar listas:
index.cs
1var 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?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
O Que São Listas?
Deslize para mostrar o menu

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
123456using 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.

É 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
12345678910using 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
1using 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
123456789101112131415using 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
1234567891011121314151617using 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
123456789101112131415161718using 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
1234567891011121314151617181920using 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
12345678910111213141516using 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
123456789101112131415using 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
123456789101112131415using 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); } } }
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
1float 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
1var number = 7.9f;
Também é possível utilizar declaração implícita ao declarar listas:
index.cs
1var 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?
Obrigado pelo seu feedback!