funciones - metodos anonimos c#
Expresión lambda vs métodos anónimos (2)
Esta pregunta ya tiene una respuesta aquí:
- palabra clave delegada vs. notación lambda 6 respuestas
Me gustaría saber cuál es la diferencia. Actualmente estoy aprendiendo estas cosas y me parece que son lo mismo:
delegate void X();
X instanceOfX;
instanceOfX = delegate() { code };
instanceOfX = () => { code };
Además, si la lambda es más nueva, ¿debería usar lambda y olvidarme de los métodos anónimos?
La única diferencia es que la lambda se puede convertir fácilmente a Expression<Func<void>>
. Los delegados son puramente solo métodos / cierres, pero la lambda también se puede dividir en un árbol de expresiones:
Expression<Func<int, int>> expr = x => x*2; // Expression tree
Func<int, int> fun = x => x*2; // function
delegate int MyDelegate(int x);
MyDelegate del = x => x*2; // Same as function, delegate
Sí, las expresiones lambda son métodos anónimos muy especiales.
Sin embargo, hay algunas diferencias profundas. Comience con la expresión Lambda de Eric Lippert frente a los métodos anónimos, parte uno y continúe con el resto de la series .