Hay una llamada de función:
(_, var surname) = Foo();
y la función:
(string Name, string Surname) Foo()
{
// Does the 'Name' attribute have discard symbol?
....
}
¿Es posible saberlo desde el tiempo de ejecución?
Solución del problema
C# 7 tiene un carácter de subrayado _ llamado descarte para crear variables ficticias. Los descartes son iguales a las variables no asignadas. El propósito de esta función es usar esta variable cuando desea omitir intencionalmente el valor al no crear una variable explícitamente.
En este ejemplo, solo llama al método Foo pero como valor de retorno, intencionalmente no necesita el Nombre y solo usa _ para descartarlo:
static void Main(string[] args)
{
(_, var surname) = Foo();
Console.WriteLine(surname);
}
static (string Name, string Surname) Foo()
{
return ("Uncle", "Bob");
}
Ahora veamos una situación ideal para usar la variable de descartes:
if (DateTime.TryParse("04/16/2022", out _))
{
Console.WriteLine("Date is valid");
}
else
{
Console.WriteLine("Date is not valid");
}
Pero si no usa _, entonces debería considerar el escenario como se muestra a continuación:
if (DateTime.TryParse("04/16/2022", out var result))
{
Console.WriteLine("Date is valid");
}
else
{
Console.WriteLine("Date is not valid");
}
Para obtener más información sobre _, puede consultar Descartes - Fundamentos de C#
No hay comentarios:
Publicar un comentario