委托,如果不追究细节,从表面上来看我们可以将其通俗地理解为一个安全的“函数指针”。当然,这个函数指针其实也是一个对象,有自己的成员,也会封装了被调用方的上下文等等。http://blog.zhaojie.me/2009/08/from-delegate-to-others.html
http://blog.zhaojie.me/2009/03/anonymous-method-false-sharing.html
http://blog.zhaojie.me/2009/06/laziness-traps.html#comment_kbYt7e3T02o0000b
匿名方法是.NET 2.0中引入的高级特性,“匿名”二字说明它可以把实现内联地写在一个方法中,从而形成一个委托对象,而不用有明确地方法名,
匿名方法的优势在于自动形成闭包,而它的缺点也是让程序员“不自觉”地创建了闭包,这会让某些对象的生命周期加长。
当这些对象被匿名方法带到多线程中之后,他们被共享了,问题就来了…
http://blog.zhaojie.me/2009/08/from-delegate-to-others-2.html
不仅仅是语法上的便利,不仅仅是少写点代码。
在使用Lambda表达式的实现中,代码变得“声明式(declarative)”了许多。所谓“声明式”,便是“声称代码在做什么”,而不像“命令式 (imperative)”的代码在“操作代码怎么做”。换句话说,“声明式”关注的是“做什么”,是指“what(to do)”。
有没有构造新的容器,又是怎么向容器里添加元素的……这些细节,使用Lambda表达式的代码一概不会关心;编译器替我们做了,我们只需要定好要筛选哪类元素等等标准就行了。
此文链接赵劼的不少文章,本文是这些链接的笔记。在此表示感谢。
本文探讨了.NET框架中委托的基础概念及其作为安全函数指针的角色,并深入分析了匿名方法和Lambda表达式这两种高级特性。重点讲解了它们如何简化代码编写,以及在多线程环境中可能出现的问题。
1175

被折叠的 条评论
为什么被折叠?



