Eficiencia y rendimiento de los miembros de funciones con cuerpo de expresión en C # 6.0


En un nuevo C# 6.0 podemos definir métodos y propiedades usando expresiones lambda.

Por ejemplo, esta propiedad

public string Name { get { return First + " " + Last; } }

Ahora se puede definir de la siguiente manera:

public string Name => First + " " + Last; 

La información sobre los miembros de la función de expresión-boided se puede encontrar aquí: http://blogs.msdn.com/b/csharpfaq/archive/2014/11/20/new-features-in-c-6.aspx

¿Alguien sabe si hay alguna sobrecarga cuando se usa una nueva sintaxis? Puede bajar (o mejorar la eficiencia de la aplicación o tal vez no importa?

 34
Author: Landeeyo, 2015-02-09

2 answers

En un nuevo C# 6.0 podemos definir métodos y propiedades usando expresiones lambda.

No, no puede. Puede definir los cuerpos de métodos y propiedades usando sintaxis que se parece a una expresión lambda, en la que utiliza el token =>.

Sin embargo, es importante que esto no significa que hay un tipo de delegado involucrado. (Mientras que una expresión lambda solo se permite en un contexto donde se convierte en un árbol de expresiones o un delegado tipo.)

Esto es puramente azúcar sintáctico. Sus dos fragmentos de código de ejemplo se compilarán exactamente en el mismo IL. Es solo una forma diferente de representar el cuerpo de un getter de propiedades o método.

 63
Author: Jon Skeet,
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-02-09 13:58:15

Se compilarán hasta el mismo IL, siempre puedes probar esto tú mismo haciéndolo y usando ildasm para extraer el IL.

 8
Author: tolanj,
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-02-09 13:58:21