现在的位置: 首页 > 综合 > 正文

C#3.0中的Lambda表达式和匿名函数。

2014年02月17日 ⁄ 综合 ⁄ 共 1434字 ⁄ 字号 评论关闭

Lambda主要用于匿名函数和Linq,因为Ling我并未做过任何笔记!现在主要通过匿名函数说说Lambda来说吧!

 

1:匿名函数

      匿名函数并不是传统意义上的函数,他不是类的方法,匿名函数纯是为了委托实现的!

      eg: 为Timer的Elapsed事件添加处理函数;

     

      myTimer.Elapsed += delegate(object  o,EventArgs  e)

      {

          Console.Write("这是匿名函数");

       }

       需要注意,匿名函数容易带来混搅,因为,委托的定义和匿名函数都需要用到delegate关键字!

       一般情况,如果函数的代码过短,一两句语句,匿名函数在运行上和编写上都会十分有效率!如果函数的代码体过长,就需要传统的自定义函数了,这是为了方便代码的重用!

 

2:Lambda表达式

      实际上,lambda表达式简化匿名方法的一种。第一部分(匿名函数)的代码,可以使用Lambda表达式从写。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
using System.Threading;

namespace Test
{
    public class Test
    {
      
        static void Main(string[] args)
        {
            //因为Threading名称空间里也含有Timer类,所以,要指明使用的哪个!
            System.Timers.Timer myTimer = new System.Timers.Timer(500);
            System.Timers.Timer myTimer2 = new System.Timers.Timer(500);

            //使用lambda表达式!
            myTimer.Elapsed += (o,q) => Console.WriteLine("Lambda");

            //使用普通的方法来为事件添加处理函数!
            myTimer2.Elapsed += Write1;


            myTimer.Start();
            myTimer2.Start();
            Console.Read();
        }

        public static void Write1(Object o, EventArgs e)
        {

           
            Console.WriteLine("usually");

        }

    }
}

结果:

     Lambda有三个部分组成:1)放在括号里面的参数(一般不需要指定类型)     2)=> 运算符     3)C#运算符

     lambda表达式使用类型推理功能确定所传送参数的类型,其实这不是必须的。我们也可以指定参数类型。eg: (int param1,int param2)=>param1+param2;

                 注意,如果有多个参数,不能一个指定类型,一个不指定。

                 注意,如果没有定义参数,可以使用空括号来表示eg:   ()=>Math.PI

     lambda表达式语句体

                 注意,如果语句体包含多个语句,只需要一个大括号就行eg:   (param1,param2)=>{ 。。。。 }

                 注意,返回类型方面,如果lambda表达式代表的函数不是返回void ,需要使用return语句eg:(param1,param2)=>{return param1+param2}

抱歉!评论已关闭.