首页 > 其他 > 详细

委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。

时间:2014-04-25 11:37:58      阅读:481      评论:0      收藏:0      [点我收藏+]

1.原始的委托 (.net 1.0)

bubuko.com,布布扣
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsFormsAppLINQ
{
    public partial class Form1 : Form
    {
        public delegate void MyDelegate();
        public Form1()
        {
            InitializeComponent();

            MyDelegate myDelegate = new MyDelegate(DoSomething);

            myDelegate();

        }

        public void DoSomething()
        {
            MessageBox.Show("Hello");
        }
    }
}
bubuko.com,布布扣

2.Action预定义委托, 节省了委托的定义.

bubuko.com,布布扣
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsAppLINQ
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();

            Action myDelegate = new Action(DoSomething);

            myDelegate();
        }

        public void DoSomething()
        {
            MessageBox.Show("Hello"); 
        }
    }
}
bubuko.com,布布扣


3.Lambda表达式, 再省掉方法定义.

bubuko.com,布布扣
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsAppLINQ
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();

            Action myDelegate = new Action(() => { MessageBox.Show("Hello"); });

            myDelegate();
        }       
    }
}
bubuko.com,布布扣


4.一对小括号, 直接执行.

bubuko.com,布布扣
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsAppLINQ
{
    public partial class Form4 : Form
    {
        public Form4()
        {
            InitializeComponent();

            new Action(() => { MessageBox.Show("Hello"); })();
        }
    }
}
bubuko.com,布布扣

 总结,()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体,这是一个常规的套路,可以直接记住。

 

委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。,布布扣,bubuko.com

委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。

原文:http://www.cnblogs.com/liuzhendong/p/3687683.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!