亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

初步認識C#中的Lambda表達式和匿名方法

2020-01-24 02:12:28
字體:
來源:轉載
供稿:網友

寫在前面

元旦三天在家閑著無事,就看了看Linq的相關內容,也準備系統的學習一下,作為學習Linq的前奏,還是先得說說Lambda與匿名方法的知識點。也算是對知識點的查漏補缺吧,也許你會說這沒啥大不了的,項目中都在用,但是有些知識,你回頭在查看的時候,總會有那么點不一樣的收獲,這點我是感同身受的,我看書有個習慣,一本書,我能看個三四遍,每次總會有收獲。當然,你可以說,當時肯定沒認真看,不是那樣子的,我認為最直接的原因在于,當時你看是看,沒有在真正的項目中遇到過,所以你心里對它的理解并不深,如果在有那么點項目經驗了,在去翻看書中的理論知識,心里總會有那種豁然開朗的感覺。信不信由你,反正我是信了!

匿名方法

匿名方法顧名思義,是沒有名字的方法,但是仍有方法體,仍能干活。在很多地方可能你都見過它,比如js中,用的最多!

看看Msdn給的說法:

在 2.0 之前的 C# 版本中,聲明委托的唯一方法是使用命名方法。 C# 2.0 引入了匿名方法,而在 C# 3.0 及更高版本中,Lambda 表達式取代了匿名方法,作為編寫內聯代碼的首選方式。 不過,本主題中有關匿名方法的信息同樣也適用于 Lambda 表達式。 有一種情況下,匿名方法提供了 Lambda 表達式中所沒有的功能。 您可使用匿名方法來忽略參數列表。 這意味著匿名方法可轉換為具有各種簽名的委托。 這對于 Lambda 表達式來說是不可能的。


復制代碼 代碼如下:

namespace Wolfy.LinqDemo
{
    /// <summary>
    /// 創建一個委托Del
    /// </summary>
    /// <param name="x">參數</param>
    public delegate void Del(int x);
    class Program
    {
        static void Main(string[] args)
        {
            //使用匿名方法創建一個委托對象d
            Del d = delegate(int x)
            {
                Console.WriteLine(x);
            };
        }
    }
}

通過使用匿名方法,由于您不必創建單獨的方法,因此減少了實例化委托所需的編碼系統開銷。

例如,線程類即可創建一個線程并且包含該線程執行的代碼。

復制代碼 代碼如下:

      Thread thread = new Thread(
       delegate()
       {
           //方法體
           Console.WriteLine("Hello world");
       });

可以更直白的這樣理解,如果該方法就使用那么一次,那么就可以使用匿名方法。

Lambda

定義

Lambda 表達式是一種可用于創建委托或表達式目錄樹類型的匿名函數。

若要創建 Lambda 表達式,需要在 Lambda 運算符 => 左側指定輸入參數(如果有),然后在另一側輸入表達式或語句塊。

復制代碼 代碼如下:

/// <summary>
    /// 創建一個委托Del
    /// </summary>
    /// <param name="x">參數</param>
    public delegate void Del(int x);
    class Program
    {
        static void Main(string[] args)
        {
            Del del = x => Console.WriteLine(x * x);
            del(2);//4
            Console.Read();
        }
    }

若要創建表達式目錄樹,可以這樣:

復制代碼 代碼如下:

/// <summary>
    /// 創建一個委托Del
    /// </summary>
    /// <param name="x">參數</param>
    public delegate void Del(int x);
    class Program
    {
        static void Main(string[] args)
        {
            Del del = x => Console.WriteLine(x * x);
            del(2);//4
            System.Linq.Expressions.Expression<Del> expression = x => Console.WriteLine(x);
            Console.Read();
        }
    }

上面的例子創建了一個表達式目錄樹對象expression,由于Del委托是沒有返回值的,這里是將其直接輸出。

表達式Lambda

表達式位于 => 運算符右側的 lambda 表達式稱為“表達式 lambda”。表達式 lambda 會返回表達式的結果,并采用以下基本形式:

復制代碼 代碼如下:

(input parameters) => expression

  注意:僅當 lambda 只有一個輸入參數時,括號才是可選的;否則括號是必需的。 括號內的兩個或更多輸入參數使用逗號加以分隔:

復制代碼 代碼如下:

(x, y) => x == y
//有時,編譯器難以或無法推斷輸入類型。 如果出現這種情況,你可以按以下示例中所示方式顯式指定類型
(int x, string s) => s.Length > x
//使用空括號指定零個輸入參數
() => SomeMethod()

語句Lambda

語句 lambda 與表達式 lambda 表達式類似,只是語句括在大括號中

復制代碼 代碼如下:

(input parameters) => {statement;}

statement(語句Lambda)可以包含任意數量的語句,但通常不會多于兩個或三個。

一個例子

復制代碼 代碼如下:

namespace Wolfy.LinqDemo
{
    /// <summary>
    /// 創建一個委托Del
    /// </summary>
    /// <param name="x">參數</param>
    public delegate void Del(string strName);

    class Program
    {
        static void Main(string[] args)
        {
            Del d = x =>
            {
                string s = "Hello" + " " + x;
                Console.WriteLine(s);
            };
            d("wolfy");
            Console.Read();
        }
    }
}

注意

像匿名方法一樣,語句 lambda 也不能用于創建表達式目錄樹

總結

這里對Lambda及匿名方法做了一個簡單介紹。雖然在項目中也經常使用,但是對Lambda的基礎知識,還是需要補一補。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩中文综合网| 日韩成人中文字幕在线观看| 欧美激情啊啊啊| 日韩av毛片网| 精品视频9999| 亚洲欧美国产日韩中文字幕| 日韩欧美一区二区三区| 日韩视频在线一区| 91国产美女在线观看| 欧洲成人免费aa| 国产欧美一区二区| 青青在线视频一区二区三区| 中文字幕精品久久久久| 国产成人精品免费视频| 亚洲综合精品伊人久久| 国产精品第七十二页| 97精品欧美一区二区三区| 欧美一级片在线播放| 亚洲人成网7777777国产| 亚洲欧美日韩中文视频| 国产精品久久婷婷六月丁香| 自拍偷拍免费精品| 亚洲国产精品资源| 欧美日韩免费网站| 免费99精品国产自在在线| 国产精品久久久久久久久久小说| 亚洲黄页视频免费观看| 91久久精品美女高潮| 久久综合伊人77777| 国产精品久久电影观看| 国产精品视频在线播放| 狠狠色狠狠色综合日日五| 亚洲va欧美va国产综合久久| 91精品国产高清久久久久久久久| 国产精品一区二区在线| 欧美在线观看www| 成人免费大片黄在线播放| 久久99精品国产99久久6尤物| 中文字幕亚洲一区二区三区五十路| 亚洲天堂男人天堂女人天堂| 亚洲男人的天堂在线播放| 精品国产一区二区三区四区在线观看| 亚洲视频axxx| 最近中文字幕mv在线一区二区三区四区| 精品亚洲va在线va天堂资源站| 国产v综合v亚洲欧美久久| 日韩综合视频在线观看| 欧美激情精品久久久| 日韩免费观看在线观看| 国产精品黄色av| 国产精品免费视频久久久| 亚洲free性xxxx护士白浆| 97久久超碰福利国产精品…| 欧美午夜xxx| 欧美日韩一区二区免费在线观看| 日本人成精品视频在线| 亚洲美女免费精品视频在线观看| 欧美夫妻性生活xx| 日韩免费在线观看视频| 久久影视电视剧免费网站清宫辞电视| 成人精品视频久久久久| 成人免费网站在线观看| 久久视频在线直播| 成人在线精品视频| 一区二区亚洲欧洲国产日韩| 亚洲国产成人精品久久久国产成人一区| 欧美成人精品h版在线观看| 2021久久精品国产99国产精品| 日韩欧美一区二区在线| 国产一区二区三区日韩欧美| 亚洲免费av网址| 成人免费高清完整版在线观看| 中文字幕日本精品| 国产成人精品久久二区二区91| 久久久精品一区二区三区| 中文字幕自拍vr一区二区三区| 97婷婷大伊香蕉精品视频| 正在播放亚洲1区| 日本一区二区在线播放| 成人做爰www免费看视频网站| 一区二区三区黄色| 91精品久久久久久久久不口人| 国产精品视频成人| 国产成人精品一区二区在线| 精品国产乱码久久久久久婷婷| 亚洲欧美色婷婷| 久久精品国产一区二区电影| 久久国产精品偷| 亚洲视频网站在线观看| 久久久久久12| 一区二区成人av| 国产一区视频在线| 91在线观看免费| 久久亚洲一区二区三区四区五区高| 欧美综合第一页| 九九久久精品一区| 欧美视频在线免费看| 日韩免费av片在线观看| 国产a级全部精品| 日韩精品在线免费观看视频| 久久精品国产视频| 久久色精品视频| 亚洲最大av在线| 在线观看欧美视频| 欧美日韩亚洲一区二| 亚洲аv电影天堂网| 日韩小视频在线| 麻豆国产va免费精品高清在线| 一本大道亚洲视频| 韩国19禁主播vip福利视频| 亚洲成人激情小说| 国产精品无av码在线观看| 米奇精品一区二区三区在线观看| 欧美日韩国产丝袜美女| 日韩成人在线视频网站| 中文字幕日韩精品在线观看| 成人在线国产精品| 日韩久久免费视频| 亚洲韩国青草视频| 亚洲精品白浆高清久久久久久| 国产精品久久久久不卡| 中文字幕亚洲第一| 国产国语刺激对白av不卡| 亚洲网站在线播放| 久久精品欧美视频| 久久视频免费观看| 一本一本久久a久久精品牛牛影视| 精品日本高清在线播放| 成人疯狂猛交xxx| 日韩中文第一页| 九九精品视频在线| 日韩av片永久免费网站| 久久久久久久久网站| 亚洲人成在线免费观看| 亚洲理论片在线观看| 亚洲午夜女主播在线直播| 91精品美女在线| 中文字幕精品av| 久久久久久国产精品久久| 欧美多人乱p欧美4p久久| 亚洲最大激情中文字幕| 亚洲欧洲xxxx| 欧美激情小视频| 日韩av网址在线观看| 黄色成人在线播放| 亚洲人成电影在线播放| 精品久久久中文| 国产91在线播放九色快色| 精品福利在线看| 国产91色在线免费| 久久国产加勒比精品无码| 色综合久久悠悠| 亚洲网站在线观看| 一区二区福利视频| 欧美影院成年免费版| 久久色免费在线视频| 91精品国产乱码久久久久久蜜臀| 久久久久久久久爱| 色老头一区二区三区在线观看| 国产免费成人av| 国产在线播放91| 精品视频9999| 亚洲精品永久免费| 久热99视频在线观看|