Novidades do C# 11: Pattern Matching em strings com Span<char> e ReadOnlySpan<char>

Renato Groffe
2 min readFeb 20, 2023

--

O C# 11 também trouxe melhorias no mecanismo de Pattern Matching voltadas à manipulação de strings. Isto acontece através da possibilidade de aplicar padrões com constants associadas a instâncias dos tipos Span<char> e ReadOnlySpan<char>.

Na listagem a seguir temos a implementação da classe estática TestesPatternMatching:

  • O método IsProgrammingLanguage recebe como parâmetro uma instância de ReadOnlySpan<char>, fazendo uso do operador is (linha 7) e de um array que representa parte de uma string (iniciando com o valor C# - linha 9) para testar padrões de texto;
  • Já no método IsRelationalDatabase temos outro exemplo de utilização do operador is (linha 17), a fim de identificar textos que iniciam com o termo SQL.

Na próxima listagem temos a declaração de várias strings baseadas em ReadOnlySpan<char> e Span<char>, com os métodos IsProgrammingLanguage e IsRelationalDatabase de TestesPatternMatching sendo acionados a fim de testar esta nova funcionalidade:

Ao executar este exemplo teremos o seguinte resultado:

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

O código desse projeto de exemplo também está disponível no GitHub:

https://github.com/renatogroffe/CSharp11-PatternMatchingSpan

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!

E finalizo este artigo com um convite…

Neste próximo evento ONLINE e GRATUITO do Canal .NET serão apresentadas as principais novidades que integram o .NET 7, com exemplos de implementação já utilizando o C# 11 e o ASP.NET Core.

Quando: 06/03/2023 (segunda) a partir das 21:00 — horário de Brasília

Faça sua inscrição em:
https://bit.ly/live-dotnet7-novidades

--

--

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