Novidades do .NET 8: melhorias na formatação de strings com CompositeFormat
Outra das melhorias envolvendo performance no .NET 8 está relacionada à formatação de strings: trata-se do tipo CompositeFormat (namespace System.Text), uma nova alternativa para a geração de strings a partir de padrões de formatação.
Muitos Desenvolvedores .NET estão habituados à geração de strings empregando padrões de texto, com isto acontecendo por meio do uso do método Format do tipo String (baseado em placeholders, definidos por números entre colchetes - { e }) ou via interpolação de strings (com o texto se iniciando por $). A alternativa baseada em CompositeFormat é recomendável para padrões de formatação ainda não conhecidos em tempos de compilação, com uma mesma instância deste novo tipo sendo reutilizada múltiplas vezes em conjunto com o método Format de String (a fim de maximizar a performance na manipulação de texto).
No exemplo a seguir podemos observar a utilização desta nova funcionalidade:
- Um padrão de texto será informado por meio de digitação (linhas 17 a 32);
- Esse padrão será repassado como parâmetro ao método Parse de CompositeFormat, gerando uma instância desta classe;
- Na linha 36 a instância do tipo CompositeFormat é serializada, com a 63exibição dos seus diferentes atributos em tela (string que representa o padrão + número de placeholders);
- As sucessivas chamados ao método Format (linhas 56 e 57) farão então uso da instância de CompositeFormat, como meio de aumentar a performance empregando um padrão de texto que não era conhecido previamente.
A implementação do tipo Estado está na listagem a seguir:
Na imagem seguinte temos o resultado da execução desta Console Application a partir do Visual Studio 2022 (a propriedade MinimumArgumentCount que aparece no resultado serializado de CompositeFormat retornou o valor 2, referente à contagem de placeholders presentes no padrão informado):
O padrão empregado neste exemplo - {0}-{1} - foi informado via digitação, como indicado na animação a seguir:
A utilização de um segundo padrão com CompositeFormat — Estado: {0} - Sigla: {1} - é demonstrada na próxima animação:
Esse exemplo também foi disponibilizado no GitHub:
https://github.com/renatogroffe/DotNet8-ConsoleApp-CompositeFormat
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!