Lambda expression vs anonymous methods [duplicate]

微笑、不失礼 提交于 2019-12-03 05:39:08

问题


I would like to know what is the difference. Currently I am learning this stuff and it seems to me like these are just the same:

delegate void X();

X instanceOfX;

instanceOfX = delegate() { code };

instanceOfX = () => { code };

Also if the lambda are newer, should I just use lambda and forget on anonymous methods?


回答1:


Yes, lambda expressions are just very special anonymous methods.

However, there are some deep differences. Start with Eric Lippert's Lambda Expression vs. Anonymous Methods, Part One and continue to the rest of the series.




回答2:


The only difference is the lambda can be easily cast to Expression<Func<void>>. The delegates are purely just methods/closures, but the lambda an also be broken down into an expression tree:

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


来源:https://stackoverflow.com/questions/4934544/lambda-expression-vs-anonymous-methods

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!