Lambda表達式基礎

来源:http://www.cnblogs.com/Mysdm/archive/2017/09/07/7488999.html
-Advertisement-
Play Games

1.委托的典型用法 1.1定義一個委托: 1.2 定義一個MyClass類,放置一個滿足 AddDelegate委托要求的方法 1.3定義一個委托變數 1.4實例化一個MyClass對象,並將其 Add方法引用傳給委托變數del 1.5通過委托變數調用MyClass對象的 Add()方法 總結:定義 ...


1.委托的典型用法

  1.1定義一個委托:

public delegate int AddDelegate(int i, int j);

  1.2 定義一個MyClass類,放置一個滿足 AddDelegate委托要求的方法

1 class MyClass
2 {
3     public int Add(int i , int j)
4     {
5         return i + j;
6     }
7 }

   1.3定義一個委托變數

AddDelegate del = null;

 1.4實例化一個MyClass對象,並將其 Add方法引用傳給委托變數del

MyClass obj = new MyClass();
del = obj.Add ;

 1.5通過委托變數調用MyClass對象的 Add()方法

int result = del(100, 200);
Console.WriteLine(result);//300

總結:定義委托,定義委托所需要的方法,調用

2.為了簡化委托編程,C#首先引入了一種語法特性—— 匿名方法,之後,再自然地演化為了Lambda表達式。

  匿名方法的示例(AnonymousMethodToLambda )

    2.1定義委托

      

public delegate int AddDelegate(int i,int j );

    2.2使用匿名方法定義委托變數//匿名方法“沒有名字”, 可以直接賦值給委托類 型的變數。

AddDelegate del = delegate(int i, int j)
{
    return i + j;
};

    2.3通過委托變數“間接”地調用方法

    

Console.WriteLine(del(100,200)); //300

總結:匿名方法其實是將方法定義與委托變數賦值兩個步驟 合而為一,從而省去了專門定義符合委托要求的方法 這個步驟。(1.2和1.4)

3.更進一步,將匿名方法轉換為Lambda表達式……

  3.1

AddDelegate del = (i, j) => i + j;

總結:Lambda表達式在功能上等價於匿名方法,可以看成是匿名方法的進一步簡化


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 什麼是TLS 原理在網上資料很多,這裡不展開。 簡單點說,動態申請的每線程變數。有一類比較熟悉的每線程變數是一個帶__thread的每線程變數,兩者的區別在於,TLS這類每線程變數是動態申請的。有以下一系列介面: #include <pthread.h> int pthread_key_crea ...
  • 說明:文章所有內容截選自實驗樓教程 "【Vim編輯器】" ~ Vim 快速入門 一、實驗介紹 1.1 實驗內容 本次實驗將學習vim中的不同模式和一些基本操作。 1.2 實驗知識點 + Vim中的六種基本模式 + Vim中的基本操作 1.3 課程來源 "VIM 線上手冊" 二、實驗步驟 2.1 vi ...
  • 本文中的提到GNU擴展時,表示該功能是GNU為sed提供的(即GNU版本的sed才有該功能),一般此時都會說明:如果要寫具有可移植性的腳本,應儘量避免在腳本中使用該選項。 本文中的正則表達式幾乎和grep中支持的一樣。但還是有少數幾個是sed自身才能解析的表達式。因此本譯文中只對這些sed自身才支持 ...
  • Ubuntu安裝坑: 1、對於新手第一次安裝ubuntu,特殊情況會出現因為解析度問題導致安裝界面不全,無法進行下一步操作。 解決方案:使用alt+滑鼠左鍵拖動屏幕Linux文件名亂碼問題: 2、因為windows對於中文的編碼預設使用GBK,而linux系統上統一使用UTF-8進行編碼,這就導致大 ...
  • 回到目錄 對於業務層的程式的致命錯誤,我們一直的做法就是直接拋出指定的異常,讓程式去終斷,這種做法是對的,因為如果一個業務出現了致命的阻塞的問題,就沒有必要再向上一層一層的返回了,但這時有個問題,直接拋異常,意味著伺服器直接500了,前端如何去顯示,或者如果你是API的服務,如果為前端返回,如果是5 ...
  • 最近在學習百度的開源上傳組件WebUploader,上一篇文章,學習了批量文件上傳,今天學習一下批量圖片上傳,實際上與文件上傳很類似,只是添加了圖片顯示功能,這個功能WebUploader組件中已經提供了。 ...
  • 作為微軟下一代的開源的跨平臺的開發框架, Asp.net core 正在吸引越來越多的開發者基於其構建現代 web 應用。 目前, Azure App Service 也實現了對 asp.net core 的支持。 用戶所開發的 ASP.NET Core Web 應用, 以與通常 Asp.net W ...
  • 微信小程式給我們提供了一個很好的開發平臺,可以用於展現各種數據和實現豐富的功能,通過小程式的請求Web API 平臺獲取JSON數據後,可以在小程式界面上進行數據的動態展示。在數據的關鍵 一環中,我們設計和編寫Web API平臺是非常重要的,通過這個我們可以實現數據的集中控制和管理,本篇隨筆介紹基於... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...