Compartilhar via


Inicialização de instâncias do tipo Dictionary - C# 6.0

O objetivo deste artigo é apresentar a nova forma para inicializar instâncias do tipo Dictionary no C# 6.0.

** Este post foi elaborado com base em um material publicado através do grupo de usuários .NET Coders, uma das principais comunidades de desenvolvimento no mundo.
*

Introdução

Em versões anteriores do C# existiam dois modos possíveis para a inicialização de objetos do tipo Dictionary. A primeira forma empregava o método Add, logo após a geração de uma instância da classe Dictionary:

...
 
Dictionary<string, string> capitais =
    new Dictionary<string, string>();
     
capitais.Add("SP", "São Paulo");
capitais.Add("RJ", "Rio de Janeiro");
capitais.Add("MG", "Minas Gerais");
capitais.Add("RS", "Porto Alegre");
capitais.Add("BA", "Salvador");
capitais.Add("SC", "Santa Catarina");
capitais.Add("DF", "Brasília");  
 
...

A segunda maneira utiliza pares formados por chave e valor, com estes dois elementos separados pelos caracteres “{” e “}”:

...
 
Dictionary<string, string> capitais =
    new Dictionary<string, string>() 
    { 
        {"SP", "São Paulo"},  
        {"RJ", "Rio de Janeiro"}, 
        {"MG", "Minas Gerais"}, 
        {"RS", "Porto Alegre"}, 
        {"BA", "Salvador"},  
        {"SC", "Santa Catarina"}, 
        {"DF", "Brasília"}  
    };
 
...

Nova forma de inicialização no C# 6.0

Ainda considerando o exemplo que envolve capitais e respectivos estados, na listagem apresentada nesta seção está sendo detalhado como ficaria a declaração da referência correspondente no C# 6.0.

Os elementos que constituem as chaves podem vir agora delimitados por colchetes (“[” e “]”), estando separados dos valores por um sinal de igual. Os diferentes itens (chave + valor) que compõem a coleç����o, por sua vez, encontram-se separados por vírgulas. É importante destacar que embora esta alternativa faça uso de uma sintaxe considerada mais intuitiva por muitos, a mesma não substitui as outras possibilidades herdadas de versões anteriores da linguagem.

using System;
using System.Collections.Generic;
 
namespace TesteInicializacaoDictionary
{
    class Program
    {
        static void  Main(string[] args)
        {
            Dictionary<string, string> capitais =
                            new Dictionary<string, string>()
                            {
                                ["SP"] = "São Paulo",
                                ["RJ"] = "Rio de Janeiro",
                                ["MG"] = "Minas Gerais",
                                ["RS"] = "Porto Alegre",
                                ["BA"] = "Salvador",
                                ["SC"] = "Santa Catarina",
                                ["DF"] = "Brasília"
                            };
 
            Console.WriteLine("Alguns exemplos de capitais brasileiras:\n");
            foreach (var capital in capitais)
            {
                Console.WriteLine("{0} - {1}",
                capital.Value, capital.Key);
            }
 
            Console.ReadKey();
        }
    }
}

Na próxima imagem está o resultado da execução deste bloco de código:

C# 6.0 - Novos Recursos (Exemplos)
https://gallery.technet.microsoft.com/C-60-Novos-Recursos-d22a7d9d

New Language Features in C# 6
https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6

.NET Coders – Blog
http://netcoders.com.br/blog/

.NET Coders – Facebook
https://www.facebook.com/groups/netcoders/

.NET Coders – Meetup
http://www.meetup.com/pt/NetCoders/