在
c#程式設計中,可以把整型變數、長整型變數、結構甚至類作為引數傳遞給方法,但是我們卻難以想像可以把方法作為引數傳遞給方法,這就是委託(
delegate
)。這聽起來似乎有點繞口,但是它在
c#中的功能是很強大的。
舉個例子,當我們例項化乙個執行緒(
thread
)時,我們要呼叫該執行緒的
start
方法來啟動執行緒,啟動執行緒就需要乙個引數,這個引數就是另乙個方法的名稱。於是,我們就必須定義該方法,再將方法的名稱傳遞給執行緒的
start
方法。
其實,c#為我們提供了一種偷懶的方式,不用預先在其它地方定義該方法就可達到傳遞方法作為引數的目的,這就是
c#中的
lambda
表示式,它其實是乙個匿名方法。
它使用「
=>
」運算子,讀作「
goes
to」,該
lambda
表示式左邊為輸入引數(如果有的話),右邊為您所需實現的功能的表示式或語句塊。可將此
lambda
表示式分配給委託型別。
在上面的例子中,我們可以將
lambda
表示式放在例項化執行緒時的建構函式,最後再呼叫該執行緒的
start
方法啟動執行緒:
thread
thread =
newthread (
() =>
) ;thread.start() ;
當然,還需要將命名空間
system
.threading
匯入,microsoft
將執行緒類
thread
放在該命名空間下。
另乙個例子是將
lambda
表示式分配給委託:
delegate
intdel(
inti);
static
void
main(
string
args)
在這兒您可以找到關於
lambda
表示式更詳細的講解:
C 中Lambda表示式
c 語言還是比較常見的東西,這裡我們主要介紹c lambda表示式,包括介紹乙個lambda就是乙個delegate,乙個delegate指向乙個方法等方面。你有沒有接觸過c lambda表示式,有沒有覺得匿名方法這東西很不錯,減少了很多 阿,但是匿名方法的使用還並不人性化,什麼是人性化呢?比如你可...
C 中lambda表示式
在介紹lambda表示式之前,我想先介紹以下c 標準庫所支援的傳統謂詞以及傳統謂次的不足,而由此才引入的lambda表示式 謂詞是個可呼叫的表示式,其返回結果是乙個能作為條件的值。謂詞分為一元和二元,一元的可呼叫物件只能有乙個引數,二元只能有倆個引數 我們以一元謂詞舉例 c 標準庫中的find if...
C 中的Lambda表示式
c 11開始支援lambda表示式 原文 一段簡單的code 我也不是文藝的人,對於lambda的歷史,以及lambda與c 的那段淵源,我也不是很熟悉,技術人,講究拿 說事。複製 如下 include using namespace std int main return 0 當我第一次看到這段 ...