歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C# Lambda表達式詳解

概要

今天我想給大家說道說道 C# lambda表達式,不廢話,下面開始說道!

lambda

lambda是什麼,它不是是什麼,它只是一個語法糖,看著簡單明了,寫起來簡單,對於開發人員可讀性好,還有就是省勁兒!重點來了:lambda就是委托的實現方法的簡單寫法
切記,切記,只要記住這句話,所有lambda表達式都好理解!什麼不理解,不理解啊很正常,咱們看的例子就一下明白了。

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

namespace ConsoleApplication1
{
    class Program
    {
        //聲明委托delegateTest
        delegate int delegateTest(int a);
        static void Main(string[] args)
        {
            //實現委托delegateTest
            delegateTest tset = new delegateTest(test);
            //lambda實現方式與test方法一樣
            delegateTest tset1 = new delegateTest(t => t);
        }
        //實現委托delegateTest
        public static int test(int t)
        {
            return t;
        }
    }
}

    首先我們聲明了一個委托定義返回值是int參數也是一個int類型,然後我們定義了test方法來實現delegateTest這個委托;這裡我們用了兩種方式一種是普通的聲明方法方式就是test方法,另一種我們用了lambda方式就是 t=>t,這個表達式和test方法是一樣的,注意了沒有delegateTest這個委托這個lambda表達式就是非法的,為什麼?因為lambda就是委托的實現方法,必須和委托保持一致
明白了上面的說的,咱們來仔細看看它的結構t=>t,很好理解,看圖


   明白了左面是參數,右面是方法體,是不是很簡單!記住lambda必須有對應的委托,有的同學問了為什麼有些方法我沒有聲明委托也能用呢,例如集合的擴張方法.where();.select()那是因為.net framework已經為我們聲明了相應的委托
func

Func和Action

Func和Action就是.net framework自帶的委托,我們只要查看它們的委托類型,就能寫出相應的lambda表達式,Func和Action委托其實差不多,區別是Func有返回值,Action沒有返回值,具體的可以去查看.netframework幫助文檔,一看就明白!

結語

看了上面的講解,相信你一定會理解lambda式。

Copyright © Linux教程網 All Rights Reserved