728 x 90

CSharp (C#) 11 – List patterns

CSharp (C#) 11 – List patterns

Continuando nossa série de artigos com as novidades do C# 11, vulgo CSharp, o que está bem próximo de ser lançado, sendo previsto para o lançamento novas funcionalidades dentro da linguagem. Neste artigo irei demonstrar a funcionalidade List Patterns. Vale lembrar que, se não preparou seu ambiente de desenvolvimento ainda para as novas features do .NET

Continuando nossa série de artigos com as novidades do C# 11, vulgo CSharp, o que está bem próximo de ser lançado, sendo previsto para o lançamento novas funcionalidades dentro da linguagem.

Neste artigo irei demonstrar a funcionalidade List Patterns.

Vale lembrar que, se não preparou seu ambiente de desenvolvimento ainda para as novas features do .NET 7, recomendo que leia este artigo antes de iniciar.

Como mencionei anteriormente, estes itens estão ainda em uma versão prévia e é possível que alguns deles não cheguem à versão final do C# 11.

Porém, isto nos dá uma noção do que pode ser a próxima versão do C# e o que esperar.

List patterns no C# 11

Os list patterns ou padrões de lista no português, permitem a correspondência de padrões para elementos em uma matriz ou em uma lista. Temos várias opções aqui.

Ao definir explicitamente quais valores aparecem na ordem da matriz, a matriz terá que corresponder ao mesmo comprimento e ter a mesma sequência para retornar true.

public class ExemploListas
{
    public bool Is_1_3_5(int[] numeros)
    {
        return numeros is [1, 3, 5]; 
    }
}
 
var listaPadrao = new ListPatterns();
Console.WriteLine($"Is1_3_5 = {listaPadrao.Is_1_3_5(new int[] { 1, 3, 5 })}"); // vai retornar true

Se especificarmos um _, ele corresponde a um único elemento que pode ser qualquer valor. Veja:

public class ExemploListas
{
    public bool Is_1_3_5(int[] numeros)
    {
        return numeros is [1, 3, 5]; 
    }
}
 
var listaPadrao = new ListPatterns();
Console.WriteLine($"Is1___5 = {listaPadrao.Is_1_3_5(new int[] { 1, 9, 5 })}"); // vai retornar true

Ao especificar o .., ele corresponderá a zero ou mais elementos que podem ter qualquer comprimento.

public class ExemploListas
{
    public bool Is_1_3_5(int[] numeros)
    {
        return numeros is [1, 3, 5]; 
    }
}
 
var listaPadrao = new ListPatterns();
Console.WriteLine($"Is1_DotDot_5 = {listaPadrao.Is_1_3_5(new int[] { 1, 9, 3, 8, 5 })}"); // vai retornar true

Já escrevi anteriormente sobre as outras features que vêm com estas nova versão do C# 11 e disponibilizei todas, em ordem cornológica neste artigo.

Alguns exemplos você pode encontrar lá no GitHub deste site. Até a próxima!

Posts Carousel

Leave a Comment

Your email address will not be published. Required fields are marked with *

Latest Posts

Top Authors

Most Commented

Featured Videos