代码改变世界

大马哈鱼的C#学习笔记(1):lambda表达式

2011-04-14 14:36  大马哈鱼1985  阅读(309)  评论(0编辑  收藏  举报

作为一个从C++转向C#的小码农,C#学习之路真的十分艰辛,一点都不像网上说的那样容易。

C#发展到4.0,丫的关键字还真特么多啊,貌似比C++多很多。

而且它又跟.NET密不可分,所以要学的东西那是一大箩啊。

从今天起陆续贴自己整理的笔记,如无特别说明,均为原创。

其中的一些知识点,可能来源于其他前辈的文章,我会尽量添加原文链接,如有遗漏的,请前辈勿怪。

另外,由于是初学者的个人笔记,错误在所难免,恳请各位读者斧正。

以后各篇文章就不加这个声明头了,一切从简。

lambda表达式是一个匿名函数,运算符是=>,很怪异哈

具体详解参见http://msdn.microsoft.com/zh-cn/library/bb397687.aspx

其实MSDN的链接中已经讲得很明白了,不过有点罗嗦,我在此讲一下自己的心得。

由于c#编程中,除了正儿八经的带有名字的方法外,只有delegate与方法打交道最为密切,所以lambda表达式通常用在初始化一个delegate时。

它的好处是可以省却额外搞一个方法的工作(当然,方法的实现部分是少不了的)。

例子:

        private delegate int Delegate1(int val);

        private static Delegate1 del1 = new Delegate1(add);

        private static int add(int val)

        {

            val++;

            return val;

        }

以上可以简写作:

        private delegate int Delegate1(int val);

        private static Delegate1 del1 = (v) => { v++; return v; };

是不是简洁明快了很多(不熟悉语法的话看了会不会觉得很混乱)?

当然,滥用lambda表达式会导致调试时出现比较混乱的局面,因为有可能lambda语句会运行在另一个线程中。