Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 22702|Resposta: 0

[Fonte] Existem vários tipos de rollups para coleções em C#

[Copiar link]
Publicado em 11/11/2014 08:44:59 | | |
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





Anterior:Uma carta aberta para a maioria dos na véspera do Dia dos Solteiros
Próximo:Range Rover Genérico em C# (Turn)
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com