Inicialización de variable lambda en C #[duplicar]


Esta pregunta ya tiene una respuesta aquí:

Hoy por primera vez he visto algo similar a esto:

private string m => string.Empty;

Usando lambda para inicializar una variable. ¿Por qué hacerlo así y cuáles son los beneficios?

 27
Author: Kyrylo M, 2015-12-07

3 answers

Se llama Propiedades con cuerpo de expresión y es simplemente un atajo para propiedades solo de getter:

private string m
{
    get { return string.Empty; }
}

En cuanto a los beneficios de este enfoque, supongo que puede tratarlo como azúcar sintáctica que solo le ahorra algunas pulsaciones de teclas.

Ver Roslyn Wiki

 24
Author: haim770,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-06 21:12:08

No es una variable, es una propiedad con cuerpo de expresión. Una propiedad de solo lectura, en su caso devolviendo string.Empty.

Es lo mismo que

private string m { get { return string.Empty; } }

Es una de las nuevas características introducidas en C# 6.0. El beneficio es un código más corto y conciso. Especialmente si tienes una clase con muchas propiedades simples de solo lectura.

Si quieres ver un ejemplo real de esta sintaxis, revisa este post en el blog de Eric Lippert. Como puedes ver, hay un montón de una línea métodos y propiedades allí. Sin propiedades y miembros con cuerpo de expresión, el código sería mucho más largo. Y una parte considerable de ella serían aparatos rizados.

 12
Author: Jakub Lortz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-06 21:29:59

Esto no es realmente una inicialización variable, esto enlaza la expresión lambda "string.Vaciar " a "m", por lo que cada vez que desreferencie" m", en realidad evaluará su expresión lambda.

Para leer más echa un vistazo esta página de github (sección "Miembro de función con cuerpo de expresión")

 5
Author: Christian Kiewiet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-06 21:11:27