日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

.Net中的委托

發(fā)布時間:2025/6/15 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .Net中的委托 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、什么是委托?

委托類型聲明的格式如下:

??//申明委托
???public?delegate?void?TestDelegate(string?message);

1.delegate 關(guān)鍵字用于聲明一個引用類型,該引用類型可用于封裝命名方法或匿名方法。委托是類型安全和可靠的。

2.委托是一種引用方法的類型。一旦為委托分配了方法,委托將與該方法具有完全相同的行為。委托方法的使用可以像其他任何方法一樣,具有參數(shù)和返回值,如下面的示例所示:

3.委托具有以下特點:

  • 委托類似于 C++ 函數(shù)指針,但它是類型安全的。

  • 委托允許將方法作為參數(shù)進(jìn)行傳遞。

  • 委托可用于定義回調(diào)方法。

  • 委托可以鏈接在一起;例如,可以對一個事件調(diào)用多個方法。

  • 方法不需要與委托簽名精確匹配。有關(guān)更多信息,請參見協(xié)變和逆變

  • C# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作為參數(shù)傳遞,以代替單獨定義的方法。

二、委托在.net中的幾種寫法

1.在.net 1.0中的寫法如下:

View Code ?//申明委托簽名
?public?delegate?void?TestDelegate(string?message);
//委托的匹配方法
??public?static?void?TestMethod(string?msg)
????????{
????????????Console.WriteLine(
string.Format(".net?委托:{0}",?msg));
????????}

??
static?void?Main(string[]?args)
????????{
????????????
#region?.net?1.x寫法
????????????TestDelegate?dele1?
=?TestMethod;
????????????dele1(
".net?1.x寫法");

????????????TestDelegate?dele2?
=?new?TestDelegate(TestMethod);
????????????dele2(
".net?1.x寫法");
????????????
#endregion
?????}

2.在.net 2.0中的寫法,.net 2.0中重要的是引入了匿名方法,? 當(dāng)然也可以使用.net1.0中的寫法。


View Code #region?.net2.x寫法
static?void?Main(string[]?args)
{
??
//申明委托對象的時候直接指向一個方法(匿名)的實現(xiàn)
???TestDelegate?dele3?=?delegate(string?msg)
?????????????{
?????????????????Console.WriteLine(
string.Format(".Net委托:{0}",?msg));
?????????????};
?????????????dele3(
".net2.x寫法--匿名方法");
}

3.在.net 3.x中的寫法,引入Lambda 表達(dá)式,我們來看微軟給Lambda 表達(dá)式的定義:??????

“Lambda 表達(dá)式”是一個匿名函數(shù),它可以包含表達(dá)式和語句,并且可用于創(chuàng)建委托或表達(dá)式樹類型。

所有 Lambda 表達(dá)式都使用 Lambda 運算符 =>,該運算符讀為“goes to”。該 Lambda 運算符的左邊是輸入?yún)?shù)(如果有),右邊包含表達(dá)式或語句塊。Lambda 表達(dá)式 x => x * x 讀作“x goes to x times x”。


View Code ??//該?Lambda?運算符的左邊是輸入?yún)?shù)(如果有),右邊包含表達(dá)式或語句塊
????TestDelegate?dele4?=?msg?=>?Console.WriteLine(string.Format(".Net委托:{0}",?msg));
????dele4(
".net?3.x寫法中可以引入Lambda?表達(dá)式");
三、委托的應(yīng)用場景:
只調(diào)用單個方法時.
當(dāng)一個類需要方法說明的多重執(zhí)行時.
期望使用靜態(tài)方法執(zhí)行規(guī)范時.
期望得到一個類似事件的模式時.
調(diào)用者無需知道無需獲取定義方法的對象時
只想給少數(shù)既定組件分發(fā)執(zhí)行規(guī)范時.
想要簡單的組成結(jié)構(gòu)時.

?

總結(jié)

以上是生活随笔為你收集整理的.Net中的委托的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。