O identificador Discard (_) em C#, é utilizado para informar que um valor de retorno ou
unpacking será descartado e não será usado ao longo de nosso programa.
Exemplo 10
var (codigo,_, _) = obj; //descarta 2 campos do objeto
Esse descarte pode ocorrer, de forma mais recorrente, em retorno de métodos, desconstrução de
tuplas e objetos e tipos de dados que aceitam o uso do (_).
Exemplo 11:tupla
using System;
class HelloWorld
{
static void Main()
{
//objeto tupla
(int codigo, String nome, char sigla) obj = (1, "Fulano",'Z');
//descarte de "Fulano" e 'Z'
var (codigo,_, _) = obj;
Console.WriteLine($"{codigo}");
}
}
Saída
1
O assunto Tupla é discutido com mais informações em C# Tipos Derivados: Tupla.
Exemplo 12: método
using System;
class HelloWorld
{
static Tuple<int,string> metodo(Tuple<int,string> tp)
{
return new Tuple<int,string>(tp.Item1,tp.Item2);
}
static void Main()
{
var obj = metodo(new Tuple<int,string>(1,"Fulano"));
//descarte de "Fulano"
var (a,_) = obj;
Console.WriteLine(a);
}
}
Saída
1
No comando switch, usando switch expression, o identifador (_) é usado em
substituição do caso default:
Exemplo 12: switch expression
using System;
class HelloWorld
{
static void Main()
{
int valor_teste = 1;
int ret = valor_teste switch
{
1 => valor_teste*1,
2 => valor_teste*2,
3 => valor_teste*3,
_ => -1 //valor default
};
Console.WriteLine($"{ret}");
}
}
Saída
1