Muitas variáveis são para armazenar uma coisa, como um número ou uma frase. Um objeto pode ter um monte de propriedades, armazenando uma grande quantidade de informações sobre um único conceito. Às vezes, porém, você só tem que manter o controle de uma grande lista de coisas. É aí que as classes de coleção entrar.
As classes de coleção em C # são impressionantes, porque eles podem ajudar você a manter uma lista de itens, ou um grupo de chaves e valores, e fornecer a pesquisa, proctoring, e as ferramentas de manutenção geral gratuitamente. Isso é muito mais fácil do que escrever os dois 'clientes classificar por sobrenome' centésimo método deste mês.
C # tem classes básicas de recolha, classes de coleção genérica e classes de coleção simultâneas. Estes últimos são para rosca operações seguras em um ambiente com vários processadores. Todas estas classes de coleção são úteis se você sabe onde e quando usá-los.
coleções regulares
coleções regulares armazenar o material sem tipo para você. Se você não sabe exatamente o que você está indo para armazenar, coleções regulares são para você. Quase tudo nestas classes são armazenados como objeto.
Classe | Descrição |
---|
ArrayList | Esta é apenas uma coleção simples de objetos cuja sizeis declarado inicialmente, e que tamanho é aumentado conforme necessário (butnot diminuiu). |
HashTable | Apenas uma tabela de duas colunas de chaves e valores, onde os pares arelinked para ordenar uma recuperação. |
Fila | A first in, last out lista (FIFO) de itens. Grande para o material processo storingprogram. |
Pilha | Como uma fila, mas Last In First Out (LIFO). |
coleções genéricas
C # 2.0 introduziu coleções genéricas. coleções genéricas permitem armazenar coleções digitadas de itens, como declarou em tempo de execução.
Classe | Descrição |
---|
Dicionário | Apenas um HastTable, exceto digitado, então você não tem tostore Object, Objeto. TKey e TValue são tipos, para que possa armazenar alist de se youwant. |
Lista | Esta é a nova matriz. É uma lista datilografada de itens. Byfar, a classe de coleção mais comum usado. É o default.If você precisa de uma lista de pessoas, é uma lista. |
Fila | Similar à Fila sem tipo, mas, bem, digitado! |
SortedList | Este dicionário impressionante implementa IComparable para que ele canbe ordenados. |
Pilha | Assim como o Stack sem tipo, a não ser digitado. |
classes de coleção simultâneas
Finalmente, as classes simultâneas certificar-se de que os objetos armazenados em uma lista estão disponíveis em qualquer espaço de memória, não importa o processador. É um grande negócio do que você pensa.
Classe | Descrição |
---|
BlockingCollection | É uma classe thread-safe que vai impedir um threadfrom alterar um campo que é acessível por outra coisa thread.Brilliant, realmente. |
ConcurrentDictionary | Falando de brilhante, este conjunto de pares de chave / valor pode beaccessed por vários segmentos. |
ConcurrentQueue | Lembre-se que a pilha FIFO? Sim. Este é genérico e THREADSAFE. |
ConcurrentStack | As coleções orquestradas são úteis. They'rebeneficial para a memória, para uma coisa. De qualquer forma, este é LIFO andthread-seguro, também. |
Configurando C #
Toda uma namespace das classes é projetado para configurar aplicações escritas em qualquer linguagem .NET, como C #, VB.NET, ou qualquer um dos vários outros. Os objetos dentro dela são, para dizer o mínimo, um pouco difícil de navegar. A configuração em aplicativos .NET ocorre em um arquivo .config. Este arquivo XML formatado tem um nó, e toda uma série de nós específicos do projeto dentro. Obtendo uma referência à configuração requer uma chamada para OpenExeConfiguration.
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration () -
Uma vez feito isto, obtendo uma referência a uma seção é bastante simples. o GetSection método só tem uma cadeia que é o nome do nó, e porque o arquivo de configuração é apenas texto, você pode agarrá-lo a qualquer momento.
var SectionName = "Whatever!" - System.Configuration.AppSettingsSection section = (System.Configuration.AppSettingsSection) config.GetSection (SectionName) -
Você pode adicionar seções para o arquivo de configuração usando as ferramentas de manipulação de XML no quadro. Você pode usar um grupo pré-definido em seções para a funcionalidade correspondente.
Seção | Descrição |
---|
Comece | Descreve a versão .NET para usar. |
Tempo de execução | Lista os elementos .NET para se ligar ao executável. |
Rede | Descreve proxy e outras configurações de rede. |
Cryptography | Um lugar para manter valores acessíveis referenciar recursos de criptografia |
Configuração | A seção mais utilizado. É onde você mantém seções personalizadas do arquivo de configuração. |
Trace / Debug | Duas configurações que permitem que você configure o rastreamento e registro. |
Configuração da aplicação (appSettings) | Escopo de aplicação coisas como seqüências de conexão do banco de dados. |
Definições da Web (websettings) | detalhes específicos do ASP.NET. |
programação de forma assíncrona
Um monte de Windows 8 é sobre ser rápido e fluido. A maneira de fazer isso é usando métodos assíncronos em chamadas de retorno da funcionalidade de longa duração. O problema com isto é que em C #, a melhor maneira de implementar um método assíncrono é com threading. Mas você não pode sempre depender de quando os itens de uma operação de rosqueamento vai voltar. É preciso haver algum controle se desejar que os usuários possam se sentir como há algum controle.
Entrar umasincronizar e umaesperar. umasincronizar é usada para declarar uma função assíncrona, que retorna um Tarefa. Todos assíncrono métodos devem conter pelo menos um aguardam expressão. aguardam diz C # para levar o código se refere e executá-lo em um segmento separado que o segmento do usuário. A tabela quebra as novas peças assíncronos da língua.
Declaração | Descrição |
---|
assíncrono | Um modificador que mostra o compilador que a função itmodifies é assíncrona. |
aguardam | Um operador que suspende a execução da containingmethod até que a tarefa aguardado completa. |
Tarefa | Representa uma operação assíncrona. |
Tarefa | Uma operação assíncrona que retorna um valor. |
Task.ContinueWith | A continuação que é iniciado após a operação no Taskis concluída. |