Novidades do .NET 8: melhorias na formatação de strings com CompositeFormat

Renato Groffe
3 min readOct 22, 2023

--

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

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

O padrão empregado neste exemplo - {0}-{1} - foi informado via digitação, como indicado na animação a seguir:

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

A utilização de um segundo padrão com CompositeFormatEstado: {0} - Sigla: {1} - é demonstrada na próxima animação:

Clique nesta imagem para visualizar com uma melhor resoluçã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!

--

--

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

No responses yet