91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#高級編程之Lambda表達式

發布時間:2020-07-25 10:30:39 來源:網絡 閱讀:7391 作者:刺激樂天派 欄目:編程語言

    C#的Lambda表達式,如果你第一接觸這個專業術語,聽這個名字你完全不知道它是干嘛的。那問題就來了(放心不是去藍翔學挖掘機)。

  1. 它到底是什么呢?

    說明這個問題需要借助代碼,給予簡單描述。代碼如下:

    public delegate int deleArgu(int x);//委托
    //...
    //...    
    
    int y = 0;
    
    mydeleArgu=x=>{return x*x;};//這就是一個Lambda表達式。
    
    y=mydeleArgu(5);//結果y=25;

    由上面所看到的x=>{return x*x};這就是一個Lambda表達式,它其實就是一個匿名函數。那接下來的問題就出現了。

2.什么是匿名函數?

    我也是借用幾行代碼說明,代碼如下:

public delegate int deleArgu(int x);//委托

mydeleArgu = delegate(int x){return x*x;};
Console.WriteLine(mydeleArgu(5));//輸出為25;

    上面的代碼中mydeleArgu = delegate(int x){return x*x;};這就是一個匿名函數。這個事在.Net FrameWork 2.0后加入的概念。在.Net FrameWork 1.0的委托是把指針指向一個函數,那么名字叫什么,阿貓阿狗都無所謂了,名字不再重要,所以在這個地方提供了匿名方法。


3.Lambda表達式是怎么來的?

    到了后來.Net Framework 3.5之后就更加的改進了,如下代碼:

public delegate String deleTransfer(string s);

deleTransfer =s=>s.Substring(0,1).toUpper()+s.Substring(1).toLower();//首字母大寫,其他小寫
Console.WriteLine(deleTransfer("abdDEF"));//結果"Adbef"

上面的部分就是帶一個參數的Lambda表達式。是不是感覺它就是一個匿名方法?沒錯!它就是這樣的。

我們很快就看清Lambda表達式的發展脈絡,它是委托和匿名方法過渡而來的,和匿名方法很相似。



總結:(來自官方文檔)

    

    => 運算符具有與賦值運算符 (=) 相同的優先級并且是右結合運算(參見“運算符”文章的“結合性”部分)。

Lambda 在基于方法的 LINQ 查詢中用作標準查詢運算符方法(如 Where)的參數。

使用基于方法的語法在 Enumerable 類中調用 Where 方法時(如在 LINQ to Objects 和 LINQ to XML 中一樣),參數是委托類型 System.Func<T, TResult>。 使用 Lambda 表達式創建該委托最為方便。 例如,當你在 System.Linq.Queryable 類中調用相同的方法時(如在 LINQ to SQL 中一樣),參數類型為System.Linq.Expressions.Expression<Func>,其中 Func 是最多具有十六個輸入參數的任何一個 Func 委托。 同樣,Lambda 表達式只是一種非常簡潔的構造該表達式目錄樹的方式。 盡管事實上通過 Lambda 創建的對象具有不同的類型,但 Lambda 使得 Where 調用看起來類似。

在上一個示例中,請注意委托簽名具有一個 int 類型的隱式類型輸入參數,并返回 int。 可以將 Lambda 表達式轉換為該類型的委托,因為該表達式也具有一個輸入參數 (x),以及一個編譯器可隱式轉換為 int 類型的返回值。(以下幾節中將對類型推理進行詳細討論。)使用輸入參數 5 調用委托時,它將返回結果 25。在 is 或 as 運算符的左側不允許使用 Lambda。適用于匿名方法的所有限制也適用于 Lambda 表達式


     表達式位于 => 運算符右側的 lambda 表達式稱為“表達式 lambda”。 表達式 lambda 廣泛用于表達式樹(C# 和 Visual Basic)的構造。 表達式 lambda 會返回表達式的結果,并采用以下基本形式:   

(input parameters) => expression;

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

(input parameters) => {statement;};

更多信息查詢官方文檔。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

恩施市| 丰都县| 南昌市| 正定县| 石楼县| 长兴县| 乌拉特中旗| 阜阳市| 鸡泽县| 贵定县| 六安市| 札达县| 内黄县| 家居| 雅安市| 山阴县| 冕宁县| 土默特右旗| 门源| 扎赉特旗| 曲阜市| 海原县| 恭城| 永昌县| 磴口县| 杭锦旗| 琼中| 叙永县| 威海市| 苏尼特左旗| 抚远县| 嘉祥县| 台北市| 金阳县| 永康市| 祁连县| 中山市| 松桃| 平邑县| 家居| 安庆市|