.NET

17 dez, 2024

Novidades do .NET 9 – o tipo genérico OrderedDictionary<TKey, TValue>

Publicidade

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