Sitemap

Novidades do .NET 10: melhorias na ordenação numérica de strings

2 min readMar 31, 2025

Este é o segundo artigo de mais uma série que iniciei recentemente e que cobre as novidades do .NET 10. Caso ainda não tenha acessado o primeiro post (ou deseje revê-lo), acesse o link a seguir:

.NET 10: primeiros testes com o Preview 1 + melhorias na manipulação de datas com ISOWeek

Neste novo artigo abordo uma melhoria envolvendo a ordenação de strings com conteúdo numérico, através de uma nova opção que foi incorporada ao enum CompareOptions (namespace System.Globalization): trata-se de CompareOptions.NumericOrdering, alternativa que pode ser utilizada em conjunto com a classe StringComparer (namespace System) em instruções que envolvam ordenação e comparação de valores numéricos em strings.

Podemos observar o uso de CompareOptions.NumericOrdering com StringComparer na listagem a seguir:

  • Uma instância de StringComparer é gerada, recebendo como um dos parâmetros o valor CompareOptions.NumericOrdering (linhas 13 e 14);
  • Ao acionarmos o método Equals nesta referência de StringComparer (linha 25) conseguimos determinar que 007 e 7 representam um mesmo valor, ao passo em que não há igualdade entre 30.49 e 30.489;
  • Este tipo de comportamento também estará disponível para a utilização com o método Order em um array de strings (linha 34), com a correta ordenação de diferentes valores em texto que representam números de 6 a 10;
  • E também com o método Contains, em um exemplo baseado no uso de uma instância do tipo HashSet (linha 41). Uma análise envolvendo a pesquisa do texto 10 identificará que o mesmo corresponde a 0010, um dos itens que compõem a instância mencionada.

O resultado da execução desta aplicação de testes pode ser observado na imagem seguinte:

Esse exemplo foi disponibilizado em um repositório do GitHub:

https://github.com/renatogroffe/DotNet10-ConsoleApp-Numeric-Ordering-for-String-Comparison

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), Docker Captain, Multi-Plataform Technical Audience Contributor (MTAC), Technical Writer and Speaker

No responses yet