Coleções
Coleções são estruturas fundamentais em C# para armazenar, organizar e manipular grupos de objetos de forma eficiente. Elas tornam possível trabalhar com conjuntos de dados de tamanhos e estruturas variadas, facilitando operações como busca, inserção, remoção e ordenação.
Principais Tipos de Coleções em C#
1. List<T>
A List<T>
é uma coleção genérica que armazena elementos do mesmo tipo em ordem e permite acesso por índice. O seu tamanho é dinâmico, podendo crescer ou diminuir conforme a necessidade.
Exemplo:
using System.Collections.Generic;
List<int> numeros = new List<int>();
numeros.Add(10);
numeros.Add(20);
numeros.Add(30);
foreach (int n in numeros)
{
Console.WriteLine(n);
}
numeros.Remove(20); // Remove o valor 20
Console.WriteLine(numeros.Count); // Exibe 2
Podemos aceder elementos pelo índice (numeros
) e utilizar métodos como Add
, Remove
, Contains
e Clear
.
2. Dictionary<TKey, TValue>
O Dictionary<TKey, TValue>
armazena pares chave-valor, permitindo buscas rápidas por chave. As chaves devem ser únicas e podem ser de qualquer tipo, assim como os valores.
Exemplo:
using System.Collections.Generic;
Dictionary<string, int> idades = new Dictionary<string, int>();
idades.Add("Ana", 25);
idades["Bruno"] = 30;
foreach (KeyValuePair<string, int> par in idades)
{
Console.WriteLine($"{par.Key}: {par.Value}");
}
idades.Remove("Ana");
É ideal para associar informações, como nomes a idades ou códigos a produtos.
3. Outras Coleções Comuns
- Queue<T>: Estrutura de fila (FIFO), onde o primeiro a entrar é o primeiro a sair.
- Stack<T>: Estrutura de pilha (LIFO), onde o último a entrar é o primeiro a sair.
- HashSet<T>: Coleção de elementos únicos, sem ordem específica.
- ListDictionary: Uma implementação leve de dicionário para pequenas quantidades de dados (menos de 10 itens).
Arrays vs Coleções
- Arrays têm tamanho fixo e são ideais para dados de tamanho conhecido.
- Coleções como
List<T>
eDictionary<TKey, TValue>
são dinâmicas e oferecem métodos avançados para manipulação de dados.
Boas Práticas
- Prefira coleções genéricas (
List<T>
,Dictionary<TKey, TValue>
) para maior segurança de tipo e desempenho. - Escolha a coleção adequada conforme a necessidade: listas para sequências ordenadas, dicionários para associação chave-valor, filas e pilhas para processamento sequencial.