Novidades do .NET 8: coleções imutáveis com FrozenSet
Em um artigo anterior abordei o uso de instâncias baseadas no tipo FrozenDictionary, uma nova alternativa que permite a criação de estruturas do tipo chave-valor imutáveis:
Novidades do .NET 8: estruturas chave-valor imutáveis com FrozenDictionary
Também integrando o namespace System.Collections.Frozen, temos ainda a possibilidade de criação de coleções baseadas no tipo FrozenSet. Além da questão da imutabilidade ao se trabalhar com sets/conjuntos, esta nova classe ainda é otimizada para uma maior performance em operações de leitura (como também acontece com FrozenDictionary).
Na listagem seguinte podemos observar a geração de um FrozenSet, por meio de uma chamada ao método ToFrozenSet (linha 20) e tomando por base uma instância da classe HashSet (este mesmo procedimento seria válido com um objeto do tipo SortedSet):
Ao tentar remover um valor existente (invocação do método Remove) ocorrerá um erro, como indicado na imagem seguinte (operações que produzem modificações na coleção não são possíveis com um FrozenSet):
O resultado da execução desta Console Application a partir do Visual Studio 2022 pode ser observado na próxima imagem:
Este exemplo foi disponibilizado como um repositório do GitHub:
https://github.com/renatogroffe/DotNet8-ConsoleApp-FrozenSet
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!