Padrões de lista C#

Resumo : neste tutorial, você aprenderá como usar os padrões de lista C# para combinar um array ou lista com uma sequência de padrões.

Introdução aos padrões de lista C#

C#11 introduziu um novo recurso chamado padrões de lista. Os padrões de lista permitem combinar uma matriz ou lista com uma sequência de elementos.

C# fornece três maneiras diferentes de correspondência de padrões de lista:

  • Padrão de descarte
  • Padrão de alcance
  • padrão var

Padrão de descarte

O padrão de descarte pressupõe que você conhece o comprimento da sequência e corresponde a um ou mais elementos da sequência.

Por exemplo:

var scores = new[] { 1, 2, 3, 4 , 5};
if (scores is [1, 2, 3, 4, 5])
{
    Console.WriteLine("Matched");
}Linguagem de código:  C#  ( cs )

Saída:

MatchedLinguagem de código:  texto simples  ( texto simples )

Neste exemplo, combinamos o array de cinco inteiros com o mesmo array de cinco inteiros.

Para verificar se um array possui 5 elementos independente de seus valores, você pode usar _variável assim:

var scores = new[] { 1, 2, 3, 4 , 5};
if (scores is [_, _, _, _, _])
{
    Console.WriteLine("Matched");
}Linguagem de código:  C#  ( cs )

Saída:

MatchedLinguagem de código:  texto simples  ( texto simples )

Você pode verificar se a sequência possui cinco elementos e começar com o número 1:

var scores = new[] { 1, 2, 3, 4 , 5};
if (scores is [1, _, _, _, _])
{
    Console.WriteLine("Matched");
}Linguagem de código:  C#  ( cs )

Saída:

MatchedLinguagem de código:  texto simples  ( texto simples )

Padrão de alcance

Se você não souber o comprimento da sequência, poderá usar o padrão de intervalo. No padrão de intervalo, você pode usar os dois pontos .. para especificar qualquer número de elementos. Observe que você pode usar os dois pontos uma vez na sequência.

O exemplo a seguir corresponde a uma sequência que começa com o número 1:

var scores = new[] { 1, 2, 3, 4, 5 };

if (scores is [1, ..])
{
    Console.WriteLine("Matched");
}Linguagem de código:  C#  ( cs )

Mas o exemplo a seguir não corresponde porque exige que o primeiro elemento da sequência seja 6:

var scores = new[] { 1, 2, 3, 4, 5 };

if (scores is [6, ..])
{
    Console.WriteLine("Matched");
}
else
{
    Console.WriteLine("Not matched");
}Linguagem de código:  C#  ( cs )

Saída:

Not matchedLinguagem de código:  texto simples  ( texto simples )

Você pode combinar .. com _ para formar um padrão de descarte. Por exemplo:

var scores = new[] { 1, 5, 3, 4, 2 };

if (scores is [1, _, 3, ..])
{
    Console.WriteLine("Matched");
}Linguagem de código:  C#  ( cs )

Saída:

MatchedLinguagem de código:  texto simples  ( texto simples )

Neste exemplo, combinamos uma sequência que começa com 1, seguida por qualquer número, e 3, e seguida por zero ou mais números.

Até agora, você viu padrões constantes. Em outras palavras, usamos os números constantes diretamente na sequência.

Para tornar o padrão mais flexível, você pode usar um padrão relacional como este:

var scores = new[] { 1, 2 };

if (scores is [>= 1, .., <= 3])
{
    Console.WriteLine("Matched");
}Linguagem de código:  C#  ( cs )

Saída:

MatchedLinguagem de código:  texto simples  ( texto simples )

Neste exemplo, combinamos o array com uma sequência que:

  • tem o primeiro elemento maior ou igual a um.
  • é seguido por qualquer número de elementos.
  • tem o elemento final menor ou igual a três.

Padrão Var

O padrão var permite declarar uma variável e atribuir a ela o valor do elemento correspondente. Esta variável estará disponível no mesmo escopo onde foi declarada.

Por exemplo:

var scores = new[] { 1, 2, 3, 4, 5 };

if (scores is [var first, var second, ..])
{
    Console.WriteLine($"{first}, {second}");
}Linguagem de código:  C#  ( cs )

Neste exemplo, usamos a varpalavra-chave para declarar duas variáveis, primeira e segunda. Ele atribui o primeiro e o segundo elemento da matriz a essas variáveis, respectivamente.

Resumo

  • Use o padrão de lista para combinar uma matriz ou lista com uma sequência de elementos.
  • Use o padrão de descarte quando souber o comprimento da sequência.
  • Use o padrão de intervalo com dois pontos ..para indicar qualquer número de elementos.
  • Use o padrão var para atribuir elementos correspondentes às variáveis.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *