摘要: 背后的秘密-MSIL通过著名的LINQPad,我们可以更深入的查看MSIL代码而没有任何秘密。下图是一个LINQPad的使用截图我们会看三个例子,第一个Lambda表达式如下:Action<string> DoSomethingLambda = (s) =>{ Console.WriteLine(s);// + local};对应的普通函数是这样的Action<string> DoSomethingLambda = (s) =>{ Console.WriteLine(s);// + local};生成的MSIL代码片段如下:DoSomethingNormal 阅读全文
posted @ 2013-01-06 13:50 lazycoding 阅读(474) 评论(0) 推荐(0) 编辑
摘要: 闭包的影响为了展示闭包的影响,我们看下面这个例子。var buttons = new Button[10];for(var i = 0; i < buttons.Length; i++){ var button = new Button(); button.Text = (i + 1) + ". Button - Click for Index!"; button.OnClick += (s, e) => { Messagebox.Show(i.ToString()); }; buttons[i] = button;}//如果我们点击按钮会发生什么这个问题很怪, 阅读全文
posted @ 2013-01-06 13:47 lazycoding 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 好长时间没发技术文章了,恰好看到一篇非常详细的Lambda文章。一边翻译一边学习。题目好像有点霸气。。介绍Lambda表达式是使代码更加动态,易于扩展并且更加快速(看完本文你就知道原因了)的强有力的工具。也可以用来降低潜在的错误。同时可以利用静态输入和智能提示,就像VS里一样。Lambda表达式在.net framework 3.5中提出来。并且在LINQ和ASP.NET MVC内部的一些技术中扮演了相当重要的角色。如果你考虑一下ASP.NET MVC中各类控件的实现。你就发现。奥妙就是他们大多使用了Lambda表达式。和Lambda表达式一起,使用Html扩展方法将会使得在后台创建模型成为可 阅读全文
posted @ 2013-01-06 13:45 lazycoding 阅读(467) 评论(0) 推荐(0) 编辑