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 Add, Insert, RemoveAt 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 Insert, RemoveAt 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:
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
- .NET 9 – Guia de Referência: artigos, dicas, vídeos e exemplos de utilização
- What’s new in .NET libraries for .NET 9 | Microsoft Learn
- What’s new in .NET 9 | Microsoft Learn