Novidades do C# 11: List Patterns

Renato Groffe
2 min readJun 27, 2022

--

Novos releases da linguagem C# desde a versão 7.0 vêm sempre incorporando melhorias e novidades relacionadas o conceito de Pattern Matching. Com o C# 11 não foi diferente, havendo agora a possibilidade de utilizarmos a funcionalidade chamada de List Patterns para simplificar a manipulação de arrays e Lists:

  • O pattern discard (_) pode ser utilizado para referenciar um único elemento de um array ou List;
  • Já com o pattern range (..) podemos refenciar zero ou mais elementos;
  • Existe ainda a possibilidade de usarmos o pattern var gerando um novo array ou List, em um processo de “fatiamento” (slice) de uma referência baseada nessas estruturas.

Podemos observar tais novidades na implementação a seguir, em que se definiu um tipo chamado Calendario:

  • No método ObterEstacao temos a presença de diferentes intervalos de meses, empregando os operadores _ (discard) e .. (range);
  • A operação AnalisarSequenciaMeses vai além, combinando o uso de _, .. e var para capturar diferentes intervalos de meses.

A próxima listagem traz vários exemplos de utilização dos métodos ObterEstacao e AnalisarSequenciaMeses de Calendario, explorando assim as diferentes possibilidades oferecidas por List Patterns:

Na imagem seguinte temos o resultado da execução deste exemplo com o Preview 5 do .NET 7:

Já nesta outra imagem a mesma implementação foi executada com o .NET 6:

As versões em .NET 6 e .NET 7 deste exemplo já foram disponibilizadas no GitHub:

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

E concluo este novo artigo com um convite…

Nesta segunda 27/06 às 21:00 horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.

Esta nova live trará dicas, truques e alternativas úteis para o desenvolvimento Back-End e de APIs REST com .NET 6, C#, ASP.NET Core e Azure Functions. Ao longo da apresentação será coberto o uso de diferentes frameworks, serviços na nuvem, mensageria e boas práticas de forma a facilitar e tornar mais dinâmica a implementação de soluções baseadas na plataforma .NET no seu dia a dia.

Teremos também algumas novidades do .NET 7 demonstradas na prática!

Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube:

https://bit.ly/live-backend-dotnet-jun-2022

--

--

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