Lambda 表示式(C 程式設計指南)

2021-09-07 07:26:48 字數 2694 閱讀 8683

c#

delegate int del(int i);

static void main(string args)

若要建立表示式目錄樹型別:

c#

using system.linq.expressions;

}}

=>

表示式 lambda

(input parameters) => expression

c#

(x, y) => x == y

c#

(int x, string s) => s.length > x

使用空括號指定零個輸入引數:

c#

() => somemethod()

語句 lambda

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

(input parameters) =>

語句 lambda 的主體可以包含任意數量的語句;但是,實際上通常不會多於兩個或三個。

c#

delegate void testdelegate(string s);

…testdelegate mydel = n => ;

mydel("hello");

像匿名方法一樣,語句 lambda 同樣不能用於建立表示式目錄樹。

非同步 lambda

c#

public partial class form1 : form

private async void button1_click(object sender, eventargs e)

async task examplemethodasync()

}

c#

public partial class form1 : form

; }

async task examplemethodasync()

}

有關如何建立和使用非同步方法的詳細資訊,請參閱使用 async 和 await 的非同步程式設計(c# 和 visual basic)。

帶有標準查詢運算子的 lambda

c#

public delegate tresult func(targ0 arg0)

c#

funcmyfunc = x => x == 5;

bool result = myfunc(4); // returns false of course

此處顯示了乙個標準查詢運算子,count

c#

int numbers = ;

int oddnumbers = numbers.count(n => n % 2 == 1);

c#

var firstnumberslessthan6 = numbers.takewhile(n => n < 6);

c#

var firstsmallnumbers = numbers.takewhile((n, index) => n >= index);

lambda 中的型別推理

c#

customers.where(c => c.city == "london");

lambda 的一般規則如下:

lambda 表示式中的變數範圍

c#

delegate bool d();

delegate bool d2(int i);

class test

; // del2 will be invoked after testmethod goes out of scope.

del2 = (x) => ;

// demonstrate value of j:

// output: j = 0

// the delegate has not been invoked yet.

console.writeline("j = ", j); // invoke the delegate.

bool boolresult = del();

// output: j = 10 b = true

console.writeline("j = . b = ", j, boolresult);

}static void main()

}

下列規則適用於 lambda 表示式中的變數範圍:

c# 語言規範

有關更多資訊,請參見c# 語言規範。 該語言規範是 c# 語法和用法的權威資料。

重要章節

c# 3.0 手冊,第三版:為 c# 3.0 程式設計師提供的 250 多個解決方案中的委託、事件和 lambda 表示式

另請參閱

c# 程式設計指南

linq (language-integrated query)

匿名方法(c# 程式設計指南)

is(c# 參考)

表示式樹(c# 和 visual basic)

visual studio 2008 c# 示例(請參閱 linq 示例查詢檔案和 xquery 程式)

遞迴 lambda 表示式

Lambda 表示式(C 程式設計指南)

最近在研究arcgis runtime,被下面 中的這個符號搞暈了 總感覺這是乙個函式,去微軟的 查了查,果不其然,這個也算乙個新的東西吧,學習了,感謝群友的幫忙。localserver.initializeasync graphicslayer mymap.layers graphicslayer...

Lambda 表示式(C 程式設計指南)

lambda 表示式是一種可用於建立委託或表示式目錄樹型別的匿名函式。通過使用 lambda 表示式,可以寫入可作為引數傳遞或作為函式呼叫值返回的本地函式。lambda 表示式對於編寫 linq 查詢表示式特別有用。若要建立 lambda 表示式,需要在 lambda 運算子 左側指定輸入引數 如果...

lambda表示式 lambda表示式

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