Lambda表達式的前世今生~~~~~~

来源:http://www.cnblogs.com/ZkbFighting/archive/2017/10/08/7638139.html
-Advertisement-
Play Games

namespace MyLamdba{ class Program { static void Main(string[] args) { LamDbaShow.Show(); Console.ReadKey(); } }} namespace MyLamdba{ public delegate v ...


namespace MyLamdba
{
class Program
{
static void Main(string[] args)
{
LamDbaShow.Show();
Console.ReadKey();

}
}
}

====================================================================================================================
namespace MyLamdba
{
public delegate void OutNoResultNoPara();//無返回值

public delegate void OutNoResultWithPara(string name, DateTime now);//
public delegate int WithResultWithPara(int x, int y);
public delegate string NoParaWithResult();
public class LamDbaShow
{

public static void Show()
{
//匿名函數,這裡的省略了把方法名傳過來,直接把傳參的拿過來了,把方法名去掉了
OutNoResultWithPara method1 = new OutNoResultWithPara(
delegate(string name, DateTime now)
{
Console.WriteLine("我是{0},現在{1}點了", name, now);
}
);
method1.Invoke("aaaa", DateTime.Now);
//====================^=^^=^^=^^=^我是漂亮的分割線……^=^^=^^=^^=^=============================================

OutNoResultWithPara method2 = new OutNoResultWithPara(
(string name, DateTime now) =>//把delegate 關鍵字換成了=> 箭頭的左邊是參數列表,右邊是方法體
{
Console.WriteLine("我是{0},現在{1}點了", name, now);
}
);
method2.Invoke("aaaa", DateTime.Now);
//lamdba表達式其實就是一個匿名方法
//====================^=^^=^^=^^=^我是漂亮的分割線……^=^^=^^=^^=^=============================================

OutNoResultWithPara method3 = new OutNoResultWithPara(
(name, now) =>//把delegate 關鍵字換成了=> 箭頭的左邊是參數列表,右邊是方法體
{
Console.WriteLine("我是{0},現在{1}點了", name, now);
}
);//去掉了參數類型,因為在進行委托的時候,約束了傳入參數的類型
method3.Invoke("aaaa", DateTime.Now);
//====================^=^^=^^=^^=^我是漂亮的分割線……^=^^=^^=^^=^=============================================

OutNoResultWithPara method4 = ((name, now) =>
{
Console.WriteLine("我是{0},現在{1}點了", name, now);
}
);//去掉了實例化委托,直接傳參
method3.Invoke("aaaa", DateTime.Now);
//====================^=^^=^^=^^=^我是漂亮的分割線……^=^^=^^=^^=^=============================================
OutNoResultWithPara method = (s, d) => Console.WriteLine("我是{0},現在{1}點了", s, d);
//去掉了大括弧,前提是方法體只有一行
method.Invoke("豬豬豬", DateTime.Now);
//====================^=^^=^^=^^=^我是漂亮的分割線……^=^^=^^=^^=^=============================================
OutNoResultNoPara met = () => Console.WriteLine("132123");//不傳入參數的
met.Invoke();
//====================^=^^=^^=^^=^我是漂亮的分割線……^=^^=^^=^^=^=============================================
WithResultWithPara WW = (x, y) => { return x + y; };
Console.WriteLine(WW.Invoke(1, 2));
WithResultWithPara WS = (x, y) => x + y;
Console.WriteLine(WS.Invoke(1, 2));//去掉了大括弧,帶返回值的直接去掉return 前提是方法體只有一行,
//====================^=^^=^^=^^=^我是漂亮的分割線……^=^^=^^=^^=^=============================================

OutNoResultNoPara sss = () => { };//無參數無返回值,啥都沒乾

NoParaWithResult aa = () => "我是無參數有返回值";
Console.WriteLine(aa());
}

public static void Study(string name, DateTime now)
{
Console.WriteLine("我是{0},現在{1}點了", name, now);
}

}
}


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

-Advertisement-
Play Games
更多相關文章
  • 基於ffmpeg和虹軟人臉識別庫的C#開源實現,對虹軟人臉識別庫進行了包裝,便於在C#中快速、安全的調用識別函數。同時,開源代碼中,包含完整的實現示例。 ...
  • 本篇作為技術分享系列的第四篇,詳細講一下手繪視頻中 Surface Pen 和 Surface Dial 的使用場景。 先放一張微軟官方商城的圖,Surface 的使用中結合了 Surface Pen 和 Surface Dial。 Surface Pen 的使用場景不難想象,就像 iPad 和 A ...
  • DataRead 和DataSet區別 dataset表示一個數據集,是數據在記憶體中的緩存。 可以包括多個表DatSet 連接資料庫時是非面向連接的。把表全部讀到Sql中的緩衝池,並斷開於資料庫的連接 datareader 連接資料庫時是面向連接的。讀表時,只能向前讀取,讀完數據後有用戶決定是否斷開 ...
  • C# 的集合類型中, 都有Synchronized靜態方法, 和SyncRoot實例方法 對於ArrayList以及Hashtable 集合類來講,當需要做到線程安全的時候,最好利用其自帶的屬性SyncRoot 來做到,儘管也可以使用其Synchronized()方法來實現,但是使用屬性會更好。 線 ...
  • XAML代碼: <local:WorkSpaceContent x:Class="SunCreate.CombatPlatform.Client.NoticeMarquee" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentati ...
  • 1. 引言 對於ASP.NET Core應用程式來說,我們要記住非常重要的一點是:其本質上是一個獨立的控制台應用,它並不是必需在IIS內部托管且並不需要IIS來啟動運行(而這正是ASP.NET Core跨平臺的基石)。ASP.NET Core應用程式擁有一個內置的 Self Hosted(自托管) ...
  • 在我們的很多框架或者項目應用中,緩存在一定程度上可以提高程式的響應速度,以及減輕伺服器的承載壓力,因此在一些地方我們都考慮引入緩存模塊,這篇隨筆介紹使用開源緩存框架CacheManager來實現數據的緩存,在微信開發框架中,我們有一些常用的處理也需要應用到緩存,因此本隨筆以微信框架為例介紹緩存的實際... ...
  • 背水一戰 Windows 10 之 控制項(控制項基類): CoreDispatcher, 依賴屬性的設置與獲取, 依賴屬性的變化回調 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...