Carregando...

Coleções

Coleções em C# são estruturas de dados que permitem armazenar, gerenciar e manipular grupos de objetos de forma eficiente e flexível. Diferente de arrays estáticos, as coleções oferecem tamanho dinâmico, métodos avançados para pesquisa, ordenação, filtragem e iteração, sendo essenciais para desenvolver aplicações robustas e escaláveis. O uso correto de coleções permite aplicar princípios de programação orientada a objetos, como encapsulamento, herança e polimorfismo, e facilita a implementação de algoritmos complexos de forma legível e eficiente.
No desenvolvimento em C#, os tipos de coleções mais comuns incluem List, Dictionary, HashSet, Queue e Stack. List é ideal para armazenar elementos ordenados e dinâmicos; Dictionary permite mapeamento chave-valor com acesso rápido; HashSet armazena elementos únicos sem ordem definida; Queue segue a lógica FIFO (first-in, first-out) e Stack a lógica LIFO (last-in, first-out). Escolher a coleção correta é fundamental para otimização de desempenho, manutenção do código e prevenção de erros comuns, como duplicações ou exceções de índice.
Neste tutorial, você aprenderá a adicionar, remover, pesquisar e iterar elementos em coleções, além de aplicar tratamento de exceções, otimização de desempenho e integração em arquiteturas de software. Ao final, o desenvolvedor será capaz de utilizar coleções de maneira estratégica, promovendo código eficiente, seguro e escalável em projetos reais de C#.

Exemplo Básico

text
TEXT Code
using System;
using System.Collections.Generic;

namespace ColecoesExample
{
class Program
{
static void Main(string\[] args)
{
// Criação de uma lista dinâmica de números
List<int> numeros = new List<int>();

// Adição de elementos
numeros.Add(10);
numeros.Add(20);
numeros.Add(30);

// Exibição dos elementos
Console.WriteLine("Lista de números:");
foreach (int num in numeros)
{
Console.WriteLine(num);
}

// Verificação de existência de um elemento
if (numeros.Contains(20))
{
Console.WriteLine("O número 20 está presente na lista.");
}

// Remoção de um elemento
numeros.Remove(10);
Console.WriteLine("Após remover 10:");
numeros.ForEach(n => Console.WriteLine(n));
}
}

}

No exemplo acima, utilizamos List para criar uma coleção dinâmica. Os métodos Add(), Remove(), Contains() e ForEach demonstram operações fundamentais: adição, remoção, verificação e iteração. O foreach garante iteração segura e eficiente, enquanto o ForEach com lambda expression oferece uma alternativa concisa para exibição de elementos.
O uso de genéricos assegura tipo seguro, evitando casting desnecessário e erros em tempo de execução. List é ideal para armazenamento de dados sequenciais e flexível, sendo aplicável em cenários como listas de usuários, tarefas ou valores numéricos. A abordagem apresentada prepara o desenvolvedor para trabalhar com coleções mais complexas e adaptáveis a diferentes requisitos de projeto.

Exemplo Prático

text
TEXT Code
using System;
using System.Collections.Generic;

namespace ColecoesAvancadas
{
class Produto
{
public int Id { get; set; }
public string Nome { get; set; }
public double Preco { get; set; }
}

class Program
{
static void Main(string[] args)
{
// Criação de um dicionário de produtos
Dictionary<int, Produto> produtos = new Dictionary<int, Produto>();

// Adição de produtos
produtos.Add(1, new Produto { Id = 1, Nome = "Laptop", Preco = 4500 });
produtos.Add(2, new Produto { Id = 2, Nome = "Mouse", Preco = 150 });
produtos.Add(3, new Produto { Id = 3, Nome = "Teclado", Preco = 300 });

// Exibição de produtos com preço acima de 200
Console.WriteLine("Produtos com preço acima de 200:");
foreach (var produto in produtos.Values)
{
if (produto.Preco > 200)
Console.WriteLine($"{produto.Nome} - Preço: {produto.Preco}");
}

// Tratamento de erro para chave duplicada
try
{
produtos.Add(2, new Produto { Id = 2, Nome = "Monitor", Preco = 1200 });
}
catch (ArgumentException ex)
{
Console.WriteLine("Erro: chave duplicada. " + ex.Message);
}
}
}

}

Neste exemplo avançado, utilizamos Dictionary\ para demonstrar coleções orientadas a objetos, proporcionando acesso rápido a elementos via chave. O foreach sobre produtos.Values mantém o encapsulamento, enquanto try-catch garante tratamento seguro de exceções, como chaves duplicadas.
A abordagem ilustra como escolher a coleção correta afeta diretamente a performance e integridade dos dados, sendo aplicável em sistemas de inventário, controle de estoque e análise de dados. O uso de genéricos e estrutura orientada a objetos facilita manutenção, escalabilidade e integração com outros componentes do software.

Boas práticas incluem: escolher a coleção adequada ao tipo de dados e operação, utilizar foreach ou LINQ para iteração, tratar exceções corretamente e minimizar cópias desnecessárias. Erros comuns incluem uso inadequado de List em buscas intensivas, negligenciar chaves duplicadas em Dictionary e criar overhead de memória com cópias desnecessárias. Ferramentas de depuração ajudam a identificar problemas, enquanto otimização de performance envolve escolha correta de coleções e redução de operações custosas. Segurança é garantida validando entradas e evitando inconsistências nos dados.

📊 Tabela de Referência

C# Element/Concept Description Usage Example
List<T> Armazena elementos ordenados e dinâmicos List<int> numeros = new List<int>();
Dictionary\<TKey, TValue> Mapeamento chave-valor com acesso rápido Dictionary\<int, string> dict = new Dictionary\<int, string>();
HashSet<T> Armazena elementos únicos HashSet<string> nomesUnicos = new HashSet<string>();
Queue<T> Estrutura FIFO (first-in, first-out) Queue<int> fila = new Queue<int>();
Stack<T> Estrutura LIFO (last-in, first-out) Stack<int> pilha = new Stack<int>();

O aprendizado de coleções em C# proporciona compreensão profunda de estruturas de dados, algoritmos e princípios de OOP, permitindo desenvolver aplicações robustas e escaláveis. O próximo passo envolve LINQ, coleções concorrentes e padrões de design. Em projetos reais, coleções são aplicáveis em inventário, cache, pipelines de dados e manipulação de grandes volumes de informações. Recursos oficiais e comunidades online oferecem suporte contínuo para aprimorar habilidades e resolver desafios práticos.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste seu Conhecimento

Teste sua compreensão deste tópico com questões práticas.

4
Perguntas
🎯
70%
Para Passar
♾️
Tempo
🔄
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo