c 菜鳥 lambda表示式

2021-09-11 02:26:05 字數 2104 閱讀 8204

what

一、定義

lambda 表示式是一種可用於建立 委託 或 表示式目錄樹 型別的 匿名函式 。通過使用 lambda 表示式,可以寫入可作為引數傳遞或作為函式呼叫值返回的本地函式。(微軟)

理解1.lambda表示式是一種匿名方法。

匿名方法可省略引數列表,lambda表示式不能省略引數列表的圓括號()

//只需要使用乙個delegate關鍵字,加上作為方法的操作使用的**塊。

action printer = delegate ;

printer();

//乙個沒有引數的方法,返回值的型別不用指定 系統會自動判斷

() => console.writeline()

二、發展

委託 → 匿名方法 → lambda表示式 → 泛型委託  → 表示式樹

//委託分3步

//step01:用delegate定義乙個委託

public delegate int delefun(int x,int y);

//step02:宣告乙個方法來對應委託

public static int add(int x, int y)

static void main(string args)

//匿名方法分2步

//step01:用delegate定義乙個委託

public delegate int delefun(int x,int y);

static void main(string args)

; console.writeline(dfun.invoke(5, 6));

}

//lambda表示式簡化了第2步

//step01:用delegate定義乙個委託

public delegate int delefun(int x,int y);

static void main(string args)

; console.writeline(dfun.invoke(5, 6));

}

//泛型委託只需要1步

static void main(string args)

; console.writeline(dfun.invoke(5, 6));

}

說明在 c# 2.0 中引入了泛型。現在我們能夠編寫泛型類、泛型方法和最重要的:泛型委託。儘管如此,直到 .net 3.5,微軟才意識到實際上僅通過兩種泛型委託就可以滿足 99% 的需求:

//表示式樹其實與委託已經沒什麼關係了,非要扯上關係,那就這麼說吧,表示式樹是存放委託的容器。

//如果非要說的更專業一些,表示式樹是訪問lambda表示式的一種資料結構。要用lambda表示式的時候,直接從表示式中獲取出來,compile()就可以直接用了。

static void main(string args)

when

1、列表迭代

listnumbers = new list() ;

//一般用法

foreach (int i in numbers)

console.writeline(i);

//使用lambda

numbers.foreach(i => console.writeline(i));

2、linq 和lambda

//linq

var students1 = from t in db.students

where t.name == "張三"

select new ;

//lambda

var students2 = db.students

.where(t => t.name == "張三")

.select(t => new );

3、執行緒

4、多型和lambda

5、編寫內聯**時

how語法:   輸入引數(如果有) => 表示式或語句塊 

例如:

x => x * x  //指定名為 x 的引數並返回 x 的平方值

lambda表示式 lambda表示式

1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...

Lambda表示式和Lambda表示式樹

原版來自 linq學習筆記之二 lambda表示式和lambda表示式樹 lambda 表示式 lambda expressions 是linq實現的另一特性。lambda表示式的作用就是使用使用函式式語法,將方法實現關聯到委託例項。在使用查詢表示式 query expressions 時,查詢表示...

C 的Lambda 表示式

c 的lambda 表示式都使用 lambda 運算子 該運算子讀為 goes to 語法如下 形參列表 函式體 函式體多於一條語句的可用大括號括起。型別 可以將此表示式分配給委託型別,如下所示 1 2 3 delegateintdel inti delmydelegate x intj mydel...