程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 幫你理解學習lambda式

幫你理解學習lambda式

編輯:關於.NET

概要

? ? 窗前明月光,疑是地上霜,舉頭望明月,低頭思故鄉。別誤會這是開頭詩與以下文章沒任何關系。
今天我想給大家說道說道 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,很好理解,看圖

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

Func和Action

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

結語

看了上面的講解,相信你一定會理解lambda式,如果覺得好請給贊一個,轉載請注明出處

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved