GOOGLE ADS

lunes, 25 de abril de 2022

¿Cómo comprobar descartar el atributo personalizado del método?

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

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...