如其他地方所述,委托是一種包裝方法調(diào)用的類型。就像類型一樣,可以在方法之間傳遞委托實(shí)例,并且可以像方法一樣調(diào)用委托實(shí)例。匿名函數(shù)是一個(gè)“內(nèi)聯(lián)”語句或表達(dá)式,可在需要委托類型的任何地方使用。可以使用匿名函數(shù)來初始化命名委托,或傳遞命名委托(而不是命名委托類型)作為方法參數(shù)。
共有兩種匿名函數(shù),以下主題中分別討論了這些函數(shù):
-
說明:
Lambda 表達(dá)式可以綁定到表達(dá)式目錄樹,也可以綁定到委托。
在 C# 1.0 中,您通過使用在代碼中其他位置定義的方法顯式初始化委托來創(chuàng)建委托的實(shí)例。C# 2.0 引入了匿名方法的概念,作為一種編寫可在委托調(diào)用中執(zhí)行的未命名內(nèi)聯(lián)語句塊的方式。C# 3.0 引入了 Lambda 表達(dá)式,這種表達(dá)式與匿名方法的概念類似,但更具表現(xiàn)力并且更簡(jiǎn)練。這兩個(gè)功能統(tǒng)稱為“匿名函數(shù)”。通常,針對(duì) .NET Framework 版本 3.5 及更高版本的應(yīng)用程序應(yīng)使用 Lambda 表達(dá)式。
下面的示例演示了從 C# 1.0 到 C# 3.0 委托創(chuàng)建過程的發(fā)展:
class
Test
{
delegate
void
TestDelegate(
string
s);
static
void
M(
string
s)
{
Console.WriteLine(s);
}
static
void
Main(
string
[] args)
{
// Original delegate syntax required
// initialization with a named method.
TestDelegate testdelA =
new
TestDelegate(M);
// C# 2.0: A delegate can be initialized with
// inline code, called an "anonymous method." This
// method takes a string as an input parameter.
TestDelegate testDelB =
delegate
(
string
s) { Console.WriteLine(s); };
// C# 3.0. A delegate can be initialized with
// a lambda expression. The lambda also takes a string
// as an input parameter (x). The type of x is inferred by the compiler.
TestDelegate testDelC = (x) => { Console.WriteLine(x); };
// Invoke the delegates.
testdelA(
"Hello. My name is M and I write lines."
);
testDelB(
"That's nothing. I'm anonymous and "
);
testDelC(
"I'm a famous author."
);
// Keep console window open in debug mode.
Console.WriteLine(
"Press any key to exit."
);
Console.ReadKey();
}
}
/* Output:
Hello. My name is M and I write lines.
That's nothing. I'm anonymous and
I'm a famous author.
Press any key to exit.
*/
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

