码迷,mamicode.com
首页 > 其他好文 > 详细

Lambda表达式的面纱(一)

时间:2014-05-28 19:48:13      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:style   c   class   blog   http   a   

在.NET3.0版本中微软推出了Lambda表达式。这使代码的表述可以更加优雅。但是对于新事物大多会本能的排斥,虽然3.0版本已经推出了好久了,但是我向周围的人了解了一下,用Lambda的人不是很多,即使有可以使用的场合也用旧方法来代替。其实Lambda表达式并不神秘,下面让我们一起来揭开C# Lambda的面纱。

 
下面这段简单的程序是包含了一段Lambda表达式,
    class Program
    {
        delegate string MyDelagate(string val1, string val2);
 
        static void Main(string[] args)
        {
            MyDelagate my = (param1, param2) =>
            {
                string test = " 内部变量 ";
                return param1 + param2 + test;
            };
 
            
            Console.WriteLine(my(" 参数1 "" 参数2 "));
 
            Console.Read();
        }  
    }
 
运行结果如下:
bubuko.com,布布扣
 bubuko.com,布布扣
当然这个小例子并没有体现出Lambda的优势所在,Lambda的好处会在下一章会介绍。我们先去看看Lambda表达式的本质,正所谓透过现象看本质。现在需要一款反编译的工具
.net reflector (下载网址:http://115.com/lb/5lbd3lgqkupj) 打开该软件,将编译的项目文件用reflector 打开
bubuko.com,布布扣
 bubuko.com,布布扣
反编译的结果和我们写的基本一致,因为我们选择了4.0,微软在3.0的时候已经推出的Lambda表达式。让我们选择.NET2.0,然后再进行反编译,看看会变成什么样子。
bubuko.com,布布扣
 bubuko.com,布布扣
bubuko.com,布布扣
 
bubuko.com,布布扣
熟悉不? 这不就是我们所熟悉的匿名方法的写法吗。
 
既然Lambda表达式就是匿名方法写法的升级,那么在.net平台还不支持匿名方法的时候,会被反编译成什么样子呢。
bubuko.com,布布扣
 bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
 
我们还原一下程序:这是用一个委托,调用了一个方法,方法返回了三个变量拼接的字符串。 这段程序和之前的Lambda表达式实现的功能是一致的。
    class Class2
    {
        private delegate string MyDelagate(string val1, string val2);
 
        static void Main(string[] args)
        {
 
            MyDelagate my = new MyDelagate(Method);
            Console.WriteLine(my(" 参数1 "" 参数2 "));
            Console.Read();
            return;
        }
 
        private static string Method(string param1, string param2)
        {
            string test = " 内部变量 ";
            return (param1 + param2 + test);
        }
 
    }
 
 
通过上述的分析我们已经揭开了Lambda的面纱,同时也揭开了Lambda的发展历程。
1.在.net1.0的时候,我们在程序中只能通过方法调用来实现功能
2.或者通过定义委托来进行方法调用
3.在.net2.0中支持了匿名委托,所以可以通过编写匿名方法来实现功能。
4.在.net3.0中推出了Lambda表达式,它让我们在实现功能的同时,美化了代码结构。
bubuko.com,布布扣
 
bubuko.com,布布扣
 
bubuko.com,布布扣
 
bubuko.com,布布扣
 
 bubuko.com,布布扣
 
 
 
 
 
 
 
 
 
 
 

Lambda表达式的面纱(一),布布扣,bubuko.com

Lambda表达式的面纱(一)

标签:style   c   class   blog   http   a   

原文地址:http://www.cnblogs.com/bluesky2003/p/3754777.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!