Novidades do .NET 8: coleções imutáveis com FrozenSet

Renato Groffe
2 min readNov 3, 2023

--

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):

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

O resultado da execução desta Console Application a partir do Visual Studio 2022 pode ser observado na próxima imagem:

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

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!

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker