C#匿名委託,匿名函數,lambda表達式

1、類型、變量、實例之間的關係。
類型》變量》實例
類型能夠建立變量,實體類能夠建立實例,實例能夠存儲在變量裏。
image

2、委託使用過程: 
1.定義委託(寫好籤名); 
2.建立委託變量; 
3.給委託變量裏追加引用函數(相同的簽名)。函數

3、lambda表達式的由來
複製代碼
private void button1_Click(object sender, EventArgs e)
        {
            //匿名委託    Func<int, int> del
            //類型》變量》實例
            //Func是一個匿名委託類型,是一個沒有名字的類型
            //怎樣肯定它的簽名:須要若干數據類型做爲參數(前面的規定參數類型,最後一個規定返回值類型)
            //能夠直接定義一個委託變量

            //匿名函數    delegate(int a) { return a; };
            //與普通函數的區別就是將函數名換成了delegate

            //下面的表達式,就是一個經過匿名委託定義的變量del引用了一個匿名函數
            //與int a=1的過程,是相同的道理
            //Func<int, int> del =  delegate(int a) { return a; };
            //MessageBox.Show(del(5).ToString());

            //後來發現,匿名函數確定要放到委託裏,參數類型已肯定好,因而有了更簡捷的寫法,把參數類型也省去
            //就出現了lambda表達式
            Func<int, int> del = a => { return a; };
            MessageBox.Show(del(6).ToString());
        }
複製代碼

image
小貼士
定義一個匿名委託變量,比如咱們肯定要造一把槍,可是這把槍還不能工做,由於它只是完成了功能設計的階段,槍的功能就是:給它一個子彈(參數),咱們獲得一個高速飛行的子彈(返回值);
將一個lambda表達式給這個委託變量賦值,比如給這把槍安裝槍膛、扳機等內部構造的過程,這時槍能夠工做了。

4、Winform窗體中的事件spa

Winform窗體事件:用預先定義好的委託(EventHandle)的定義的變量(接收兩個參數)。 
窗體裏自帶一個委託變量;咱們作的就是給這個變量追加函數。設計

1.code

給窗體Load事件添加一個函數orm

複製代碼
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {

        }
複製代碼
自動生成的表達式
image
轉到定義,能夠查看Load事件的定義
image
相關文章
相關標籤/搜索