Dev (Back & Front)ARTIGO

Novidades do .NET 9 – o tipo genérico OrderedDictionary

A classe OrderedDictionary permite armazenar… .NET 9, da plataforma .NET. Entretanto, este tipo contava até o .NET 8.0 com uma grande limitação…

Novidades do .NET 9 – o tipo genérico OrderedDictionary
Imagem: Renato Groffe

A classe OrderedDictionary permite armazenar chaves e valores mantendo uma ordem dentro de uma coleção, estando presente desde as primeiras versões (2.0 em diante) da plataforma .NET. Entretanto, este tipo contava até o .NET 8.0 com uma grande limitação: não era possível o seu uso empregando Generics. Já com o .NET 9

.NET 9

Com o .NET 9 esta lacuna foi preenchida, já que temos agora a possibilidade de utilizar a implementação genérica OrderedDictionary<TKey, TValue>. Com isso podemos nos beneficiar da capacidade de ordenação oferecida originalmente por OrderedDictionary, tirando ainda proveito de uma tipagem mais forte decorrente do uso de Generics.

A listagem seguinte traz um exemplo de utilização de OrderedDictionary<TKey, TValue>:

  • A ordenação dos itens será respeitada, levando em conta inclusive as posições de cada par chave-valor indicadas na inicialização do objeto (linhas 10 a 17);
  • O uso de métodos como AddInsertRemoveAt e Insert (linhas 18 a 21) também preserva tal organização, com algumas dessas funcionalidades permitindo inclusive especificar um índice ao realizar uma alteração (caso de InsertRemoveAt e Insert, ao passo que Add incluirá um novo par chave-valor ao final da coleção).
using System.Runtime.InteropServices;

Console.WriteLine("***** Testes com .NET 9 | OrderedDictionary<TKey,TValue> *****");
Console.WriteLine($"Versao do .NET em uso: {RuntimeInformation
    .FrameworkDescription} - Ambiente: {Environment.MachineName} - Kernel: {Environment
    .OSVersion.VersionString}");

Console.WriteLine();

OrderedDictionary<string, int> d = new()
{
    ["GER"] = 1974,
    ["Espanha"] = 1982,
    ["Mexico"] = 1986,
    ["Italia"] = 1990,
    ["EUA"] = 1994
};
d.Add("Franca", 1998);
d.Insert(1, "Argentina", 1978);
d.RemoveAt(0);
d.Insert(0, "Alemanha", 1974);

Console.WriteLine("Copas do Mundo de Futebol - 1974 a 1998:");
foreach (KeyValuePair<string, int> entry in d)
    Console.WriteLine(entry);

Resultado

O resultado da execução dessa aplicação de testes pode ser observado na imagem a seguir:

Clique nesta imagem para visualizar com uma melhor resolução

Esse projeto foi disponibilizado no GitHub:

https://github.com/renatogroffe/DotNet9-ConsoleApp-OrderedDictionary

Caso achem útil esta solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!

Referências

Renato GroffeAutor

Atua como consultor em atividades voltadas ao desenvolvimento de sistemas há mais de 15 anos. Microsoft MVP (Most Valuable Professional) e participante do programa MTAC (Multi-Plataform Technical Audience Contributor). Bacharel em Sistemas de Informação, com Especialização em Engenharia de Software e MBA em Business Intelligence. Também é palestrante e autor técnico em portais e revistas especializadas, com foco em tecnologias Microsoft e boas práticas na área de software.

Ver perfil