Eu tenho estudado bastante sobre estrutura de dados e coleções em .NET. É incrível como entender o funcionamento e a aplicação de cada uma tem o poder de evoluir significativamente a qualidade do código que escrevemos. Por este motivo, decidi escrever uma série de artigos abordando as diferenças entre elas e quando utilizá-las.
O que são coleções?
"Dados semelhantes podem normalmente ser tratados com mais eficiência quando armazenados e manipulados como uma coleção."
Podemos encontrar as coleções na classe System.Array ou nas classes dentro dos namespaces: System.Collections, System.Collections.Generic, System.Collections.Concurrent e System.Collections.Immutable. Utilizando-as, teremos acesso aos métodos para adicionar, remover e modificar os elementos contidos em uma coleção.
Os dois tipos principais de coleções são as genéricas (System.Collections.Generic) e as não genéricas (System.Collections). A diferença entre elas é que as genéricas possibilitam criar coleções fortemente tipadas. Para exemplificar, imagine que tenhamos a classe Aluno conforme demonstrado abaixo:
public class Aluno
{
public long Id {get; set;}
public string Nome {get; set;}
}
É possível criar uma coleção de alunos utilizando a nossa classe Aluno como tipo. Sendo assim, teríamos a possibilidade de manipular os itens sem a necessidade de conversão, afastando o tão temido boxing/unboxing entre os tipos. Por este motivo, a Microsoft aconselha a utilização de coleções genéricas sempre que possível pois elas fornecem melhor desempenho e segurança de tipos.
As coleções concorrentes (System.Collections.Concurrent) permitem operações thread-safe eficientes quando temos acesso à coleção através de múltiplas threads e as imutáveis (System.Collections.Immutable) também são thread-safe e, como o nome diz, esta coleção não pode ser modificada: as operações são feitas em cima de uma cópia da coleção original.
Para esta série, iremos focar nas coleções genéricas e não genéricas o que vai nos dar muito assunto!
Conclusão
As coleções muitas das vezes são tratadas como simples e não damos a devida importância aos tipos e onde se encaixam. Após essa introdução e apresentação sobre coleções no .NET, no próximo post falaremos sobre uma coleção que provavelmente todo mundo já ouviu falar e é muito utilizada: Lista.
Referências:
Collections and Data Structures
Selecting a Collection Class
Top comments (0)