Uma coleção que representa um conjunto de objetos que podem ser acessados percorrendo cada elemento (em particular, pode ser acessada usando o loop foreach) Uma coleção contém múltiplos elementos, ou seja, há um objeto de classe de coleção e N objetos de elemento
Como qualquer classe de coleção implementa a interface IEnumerable, qualquer objeto de classe de coleção possui um método GetEnumerator(), que pode retornar um objeto que implementa a interface IEnumerator, que não é nem um objeto de classe de coleção nem um objeto de classe de elemento de coleção, sendo um objeto de classe independente. Esse objeto permite que você itere por cada objeto elemento no objeto de classe coleção
Se a classe de coleção for uma classe de coleção definida pelo usuário, o usuário deve implementar seu método GetEnumerator(), caso contrário, loops não podem ser usados. Claro, a classe IEnumerator correspondente a essa classe de coleção personalizada (a classe que implementa a interface) também deve ser personalizada
Por exemplo, o IEnumerator correspondente à classe de coleção ArrayList é ArrayListEnumeratorSimple O IEnumerator correspondente à classe de coleção Array é SZArrayEnumerator (Nenhuma das classes está coberta na documentação da Biblioteca de Classes do .NET Framework (MSDN))
1. As interfaces em System.Coloctions que representam o comportamento da coleção são: 1) Iconoletião Defina o tamanho, número de enums e métodos de sincronização para todas as coleções. Derivado de IEnumerable Ela define o comportamento mais básico da classe de coleção, e todas as classes de coleção implementam essa interface (interface base) Mas seu comportamento é muito básico: é principalmente uma propriedade de Contagem, e não faz muito sentido implementá-la sozinha
2) IEnumerável Expor uma enumeração que suporte iterações simples em um conjunto Ele possui apenas um método, GetEnumerator(), que retorna uma interface IEnumerator pela qual pode percorrer a coleção Basicamente, todas as classes de coleção implementam essa interface
3) IList A implementação do IList é uma coleção de valores que podem ser ordenados e acessados por índice para seus membros, e ela própria implementa as interfaces ICollection e IEnumerable é a classe base abstrata para todas as listas. Existem três categorias de implementações IList: somente leitura, tamanho fixo e tamanho variável.
4) Identidade A implementação IDictionary é uma coleção de pares chave/valor que por sua vez implementa as interfaces ICollection e IEnumerable é a interface base de uma coleção de pares chave/valor. Existem três categorias de implementações IDictionary: somente leitura, tamanho fixo e tamanho variável. O IDictionary pode ser chamado de dicionário, mapa ou lista de shash, e acessa valores baseados em chaves (de qualquer tipo).
2. As classes de coleção que podem ser usadas diretamente no System. Coleções são: 1) ArrayList Implemente interfaces: IList, ICollection, IEnumerable Desde que a coleção não seja modificada, o ArrayList pode suportar múltiplos leitores ao mesmo tempo com segurança À medida que elementos são adicionados à ArrayList, a capacidade é automaticamente aumentada sob demanda por realocação (aumento 2x) Se você precisar criar um array de objetos, mas não souber o tamanho do array antes, pode usar o ArrayList ArrayList refere-se a todos os elementos como objetos, então precisa ser digitado ao acessar elementos em ArrayList Prós: Mudança dinâmica de tamanho, inserção e remoção de elementos flexíveis e convenientes, ordenabilidade Desvantagens: O desempenho de inserção não é tão bom quanto o de arrays, nem de tipos fortes
2) BitArray Implemente interfaces: ICollection e IEnumerable Gerencie arrays comprimidos de valores de bits.
3) Tabela de Hash Implemente interfaces: IDictionary, ICollection, IEnumerable Você pode adicionar e remover elementos livremente ao Hashtable, alguns como o ArrayList, mas sem a sobrecarga de desempenho
4) SortedList Implemente interfaces: IDictionary, ICollection, IEnumerable SortedLIst combina as vantagens do ArrayList e do Hashtable, e pode ser ordenado por valor-chave
5) Fila Implemente interfaces: ICollection e IEnumerable Queques são filas, acesso por ordem de entrada, primeiro a sair a elementos individuais Você pode chamar o método GetEnumerator() do objeto Queque para fazer com que o objeto IEnumerator itere pelos elementos da fila
6) Stack Implemente interfaces: ICollection e IEnumerable Uma pilha é uma pilha que acessa elementos individuais em uma base de último a entrar, primeiro a sair Você pode chamar o método GetEnumerator() do objeto Stack para fazer com que o objeto IEnumerator itere pelos elementos da pilha
3. As classes de coleção mencionadas acima são todas classes gerais de coleção, e a maioria dos elementos que elas aceitam são do tipo Objeto, quando o objeto é colocado em Após a coleção, a informação original do tipo se perde – ou seja, essas classes gerais de coleção não são fortemente tipadas A solução alternativa é usar classes de coleção fortemente tipadas Namespace System.Collections System.Collections.Specialized namespace Algumas classes podem atender aos requisitos e podem ser usadas diretamente ou herdadas
|