Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Propriedades Dictionary
  2. Ordenando um Dictonary
  3. Copiando
  4. Comparando
  5. Dictionary como parâmetro, argumento e retorno
  6. Copiar parte de Dictionary
  7. IDictionary
  8. Métodos Dictionary

Dictionary, em C#, é uma estrutura de dados dinâmica fortemente tipada, com suporte a Generics, que armazena seus elementos em forma de chave-valor.

Os elementos(chave-valor) de um Dictionary são armazenados utilizando o tipo de dado KeyValuePair que contém as propriedades Key(chave) e Value(valor).

Algumas características
  1. Pertence ao namespace System.Collections.Generic
  2. Fortemente tipada
  3. Não aceita elementos repetidos
  4. Elementos acessados por chave
  5. Elementos armazenados como KeyValuePair
  6. Suporta dados heregêneos

As operações mais complexas que envolvem Dicionários, devem ser realizadas utilizando os métodos da classe Dictionary.

A declaração de um Dictionary em C#, é feita informandos os tipos de dados desejados, para armazenar os elementos chave-valor. Abaixo a sintaxe dessa declaração:

Sintaxe: Iniciado
Dictionary<tipo_chave, tipo_valor> dict2 = new Dictionary<string, int>(); //vazio

Dictionary<tipo_chave, tipo_valor> dict2 = new(); //vazio

Dictionary<tipo_chave, tipo_valor> dict2 = null //nulo

Dictionary<tipo_chave, tipo_valor> dict3 = new Dictionary<string, int> //iniciado
{
    {chave1, valor1},
    {chave2, valor2},
    {chave3, valor3};
};
Onde
tipo_chave: tipo de dado usado para a chave
tipo_valor: tipo de dado usado para o valor

Um Dictionary com valores iniciados, deve conter seus valores, baseados no tipo de dado utilizado como chave e valor, delimitados por { e }, separados por (,) e terminado com (;):

Exemplo 1
using System;
using System.Collections.Generic;

public class Program 
{
  static void Main() 
  {
    Dictionary<string, int> dict1; //nulo 
    Dictionary<string, int> dict2 = new Dictionary<string, int>(); //vazio
    Dictionary<string, int> dict3 = new Dictionary<string, int> //iniciado
    {
        {"str1",1},
        {"str2",3},
        {"str3",3}
    };
  }
}
Saída
-

O acesso aos elementos de um Dictionary é feito utilizando suas chaves passadas como argumento para o indexador [] como na sintaxe abaixo:

Sintaxe
objeto_dict[chave];

A alteração é feita atribuíndo um novo valor ao elemento identificado pela sua chave que é passada como argumento para o indexador mencionado acima.

Sintaxe
objeto_dict[chave] = valor;
Exemplo 2
using System;
using System.Collections.Generic;

public class Program 
{
  static void Main() 
  {
    Dictionary<string,int> dict3 = new Dictionary<string,int> //iniciado
    {
        {"str1",1}, {"str2",3}, {"str3",3}
    };
    
    Console.WriteLine(dict3["str1"]);
    dict3["str1"] = 10;
    Console.WriteLine(dict3["str1"]);
  }
}
Saída
1
10

Utilizando a propriedade Count de um Dictionary, podemos descobrir o número de elementos que esse contém como mostrado na sintaxe logo abaixo:

Sintaxe
objeto_dict.Count;
Exemplo 3
using System;
using System.Collections.Generic;

public class Program 
{
  static void Main() 
  {
    Dictionary<string,int> dict3 = new Dictionary<string,int> //iniciado
    {
        {"str1",1}, {"str2",3}, {"str3",3}
    };
    Console.WriteLine(dict3.Count);
  }
}
Saída
3

Para iterarmos ou percorrermos um Dictionary em C# podemos utilizar o comando foreach que foi estudado em C# Básico: Comandos de repetição.

Exemplo 3
using System;
using System.Collections.Generic;

public class Program 
{
  static void Main() 
  {
    Dictionary<string,int> dict3 = new Dictionary<string,int> //iniciado
    {
        {"str1",1}, {"str2",3}, {"str3",3}
    };
    
    foreach( KeyValuePair<string,int> el in dict3)
        Console.WriteLine("ch:{0} val:{1}",el.Key,el.Value);
  }
}
Saída
ch:str1 val:1
ch:str2 val:3
ch:str3 val:3

Para adicionar novos elementos em um Dictionary, utilizamos o método Add que recebe um elemento como argumento. Esse elemento será adicionado no fim.

Sintaxe
variavel_dicionario.Add(novo_elemento);
Onde
-
Exemplo 4
using System;
using System.Collections.Generic;

public class Program 
{
  static void Main() 
  {
    Dictionary<string,int> dict3 = new Dictionary<string,int>(); //não iniciado
    
    dict3.Add("str0",0);
    dict3.Add("str1",1);
    dict3.Add("str2",2);
    
    Console.WriteLine(dict3.Count);
  }
}
Saída
3

Para remover elementos em um Dictionary o método Remove quem recebe a chave do elementos como argumento.

Sintaxe
objeto_dict.Remove(nome_chave);
Onde
-
Exemplo 5
using System;
using System.Collections.Generic;

public class Program 
{
  static void Main() 
  {
    Dictionary<string,int> dict3 = new Dictionary<string,int> //iniciado
    {
        {"str1",1}, {"str2",3}, {"str3",3}
    };
    
    Console.WriteLine(dict3.Count);
    lst2.Remove(1);
    Console.WriteLine(dict3.Count);
  }
}
Saída
3
2

Para a remoção completa dos elementos de um Dictionary, pode ser feita utilizando o método Clear como demonstrado no exemplo abaixo:

Sintaxe
objeto_dict.Clear();
Exemplo 6
using System;
using System.Collections.Generic;

public class Program 
{
  public static void Main() 
  {
    Dictionary<string,int> dict3 = new Dictionary<string,int>
    {
        {"str1",1}, {"str2",3}, {"str3",3}
    };
    Console.WriteLine(dict3.Count);
    dict3.Clear();
    Console.WriteLine(dict3.Count);
  }
}
Saída
3
0

A classe Dictionary fornecida pelo .NET, fornece um conjunto de Propriedades para a recuperação de suas informações internas.

Tab. 1: Propriedades
Método Descrição
Comparer - Visitar
Count Retorna número de elementos Visitar
Item[chave] Retorna valor do elemento Visitar
Keys Retorna todas as chaves Visitar
Values Retorna todos os valores Visitar
Sintaxe
objeto_dict.Nome_propriedade;

objeto_dict[chave];
Exemplo
using System;
using System.Collections.Generic;

public class Program 
{
  static void Main() 
  {
    Dictionary<string, int> dict3 = new Dictionary<string, int> //iniciado
    {
        {"str1",1},
        {"str2",3},
        {"str3",3}
    };
	  
    foreach( var elem in dict3)
		Console.WriteLine($"{elem.Key}-{elem.Value}");
	
    foreach( var elem in dict3.Keys)
		Console.WriteLine($"{elem}");
	
	foreach( var elem in dict3.Values)
		Console.WriteLine($"{elem}");
  }
}
Saída
str1-1
str2-3
str3-3
str1
str2
str3
1
3
3

descrição pendente

Tab. 2: Métodos: Classe Dictionary
Método Descrição
Add Adiciona um elemento Visitar
Clear Excluir todos os elementos Visitar
ContainsKey Verifica se um elemeto está contido Visitar
ContainsValue Verifica se um valor está contido Visitar
Equals Compara dois dicionários Visitar
GetEnumerator Retorna enumerador Visitar
GetHashCode Retorna um código hash Visitar
GetObjectData - Visitar
GetType - Visitar
MemberwiseClone - Visitar
OnDeserialization - Visitar
Remove Remove um elemento baseado em chave Visitar
ToString - Visitar
TryGetValue Retorna o valor de um elemento Visitar
  1. 13/08/2025 - revisão 2 - Ajustes: pontuais, sintaxes e 'Objetivos'; Adição: 'Propriedades'
  2. 10/10/2024 - revisão 1 - Correção: exemplos Exs 4/5 e sintaxes; Remoção: textos 'lixo'; Ajustes pontuais
  3. 18/03/2024 - versão inicial