Tutorial de coleções C# com exemplos
⚡ Resumo Inteligente
Em C#, as coleções oferecem uma maneira flexível de armazenar e gerenciar grupos de objetos. Ao contrário dos arrays, as coleções crescem e diminuem de tamanho em tempo de execução, e os namespaces System.Collections e System.Collections.Generic fornecem tipos prontos para listas, dicionários, pilhas e filas.

Em nosso tutorial anterior, aprendemos como podemos usar arrays em C#. Vamos ter uma rápida visão geral disso. Arrays na programação são usados para agrupar um conjunto de objetos relacionados. Portanto, pode-se criar um array ou um conjunto de inteiros, que pode ser acessado através de um nome de variável.
O que são coleções em C#?
As coleções são semelhantes a Arrays, fornece uma maneira mais flexível de trabalhar com um grupo de objetos.
Em arrays, você deve ter notado que precisa definir previamente o número de elementos em um array. Isso teve que ser feito quando o array foi declarado.
Mas em uma coleção, você não precisa definir previamente o tamanho da coleção. Você pode adicionar elementos ou até mesmo remover elementos da coleção a qualquer momento. Este capítulo se concentrará em como podemos trabalhar com as diferentes coleções disponíveis em C#.
Classes System.Collections
O .NET Framework agrupa as classes de coleção originais não genéricas dentro do namespace System.Collections. A tabela abaixo resume os principais tipos que você pode usar imediatamente.
| Coleção | Descrição |
| Lista de Matriz | A coleção ArrayList é semelhante aos Arrays tipo de dados em C#. A maior diferença é a natureza dinâmica da coleção da lista de arrays. |
| CorMonitor | A pilha é um caso especial de coleção que representa o conceito de último a entrar, primeiro a sair (LIFO, na sigla em inglês). |
| filas | A fila é uma coleção de casos especiais que representa o conceito de "primeiro a entrar, primeiro a sair". |
| Tabela de hash | Uma tabela hash é uma coleção especial usada para armazenar itens de chave-valor. |
| Lista Ordenada | O SortedList é uma coleção que armazena pares de valores-chave em ordem crescente de chave por padrão. |
| BitArray | Uma matriz de bits é uma matriz de estrutura de dados que armazena bits. |
Coleções Genéricas em C#
As classes não genéricas acima armazenam cada elemento como um objeto genérico, o que significa que o compilador não consegue verificar o tipo e o programa paga um pequeno custo pela conversão de valores para um tipo específico. Para resolver isso, o C# adicionou o namespace System.Collections.Generic, onde cada coleção é vinculada a um tipo declarado.
Uma coleção genérica como uma lista Aceita apenas strings, portanto, os erros são detectados em tempo de compilação e nenhuma conversão de tipo é necessária ao ler um item de volta. Isso torna as coleções genéricas mais seguras, rápidas e fáceis de ler, razão pela qual são a escolha padrão no código C# moderno.
As coleções genéricas mais comuns estão listadas abaixo:
- Lista : Uma lista redimensionável baseada em índices, o substituto genérico para ArrayList.
- Dicionário : Armazena pares de chave-valor com pesquisas rápidas baseadas em hash.
- Conjunto de hashes : Armazena apenas valores únicos e suporta operações de conjunto, como união.
- Fila : Uma coleção FIFO (primeiro a entrar, primeiro a sair), a versão genérica de uma fila.
- Pilha : Uma coleção do tipo "último a entrar, primeiro a sair", a versão genérica do Stack.
- Lista ordenada : Mantém os pares chave-valor classificados por chave em ordem crescente.
Exemplo de coleção de listas em C#
A lista é a coleção genérica mais utilizada porque se comporta como um array dinâmico. O exemplo abaixo cria uma lista de strings, adiciona e remove itens, lê seu tamanho e, em seguida, imprime os valores restantes. Todo o código está escrito no arquivo Program.cs.
Passo 1) Importe o namespace System.Collections.Generic e declare uma lista de strings.
Passo 2) Adicione itens com o método Add e exclua um com o método Remove.
Passo 3) Leia a propriedade Count e, em seguida, percorra a lista com uma instrução foreach.
using System; using System.Collections.Generic; namespace DemoApplication { class Program { static void Main(string[] args) { List<string> tutorials = new List<string>(); tutorials.Add("Java"); tutorials.Add("Python"); tutorials.Add("Kotlin"); tutorials.Remove("Python"); Console.WriteLine(tutorials.Count); foreach (string tutorial in tutorials) { Console.WriteLine(tutorial); } Console.ReadKey(); } } }
Code Explicação:-
- O namespace System.Collections.Generic foi importado para que o tipo List esteja disponível para o programa.
- Uma nova lista Um diretório chamado "tutoriais" é criado e três nomes são adicionados com o método Add.
- O método Remove exclui o valor “Python”, o que deixa dois itens na lista.
- A propriedade Count retorna o número de itens, e o loop foreach imprime cada valor restante em ordem.
Quando o programa é executado, ele primeiro imprime a contagem de 2, Seguido por Java e Kotlin em linhas separadas. Isso mostra como uma coleção altera seu tamanho em tempo de execução, algo que um array fixo não pode fazer.
Diferença entre Arrays e Collections em C#
Ambos um ordem e uma coleção agrupa itens relacionados sob um mesmo nome, mas eles se comportam de maneira diferente quando o programa está em execução. Saber quando usar cada um ajuda a escrever um código mais limpo e eficiente.
As principais diferenças estão listadas abaixo:
- Tamanho Um array tem um tamanho fixo definido na declaração, enquanto uma coleção pode crescer ou diminuir a qualquer momento.
- Manipulação de tipos: Um array armazena um único tipo, enquanto uma coleção pode ser segura em relação a tipos com genéricos ou conter objetos de tipos mistos quando não é genérica.
- Localização: Os arrays são elementos nativos da linguagem, enquanto as classes de coleção residem nos namespaces System.Collections e System.Collections.Generic.
- Operações integradas: As coleções oferecem métodos prontos para adicionar, remover, pesquisar e classificar itens, enquanto os arrays fornecem apenas acesso indexado básico.
- Melhor uso: Escolha um array quando o número de itens for conhecido e fixo, e uma coleção quando a contagem mudar durante a execução do programa.
Resumindo, os arrays são mais adequados para dados de tamanho fixo, enquanto as coleções oferecem a flexibilidade que a maioria das aplicações do mundo real necessita.
