概要
? ? 窗前明月光,疑是地上霜,舉頭望明月,低頭思故鄉。別誤會這是開頭詩與以下文章沒任何關系。
今天我想給大家說道說道 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式,如果覺得好請給贊一個,轉載請注明出處