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

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

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");
        }
    }
}

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

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"); 
        }
    }
}


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

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();
        }       
    }
}


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

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"); })();
        }
    }
}

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

 

转载于:https://www.cnblogs.com/liuzhendong/p/3687683.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值