匿名方法在委託例項化中的應用

2021-05-28 04:54:39 字數 670 閱讀 5859

1、匿名方法的定義

所謂匿名方法,就是沒有實際方法宣告的委託例項,或者說它們的定義是直接內嵌在**中的,僅有引數列表和方法體,沒有返回值型別和方法名。

匿名方法這一特性僅在c#2.0及更高的版本中得到支援。

2、**示例

下面的示例將用到「c# 委託的應用1」這一博文中的例子 氣泡排序

comparisonhandler   comparisonmethod=delegate (int  first,int  second)   ;

例項化委託時用到了匿名方法該方法僅有引數列表和方法體,該匿名方法的功能等同於方法greaterthan()的功能。

delegate關鍵字指定了乙個「委託字面值」型別,這類似於用引號來指定乙個字串字面值。

呼叫bubblesort方法時可用如下語句:bubblesort(items,comparisonmethod); 甚至可以再不宣告comparisonmethod變數的前提下直接呼叫方法bubblesort,如下:

bubblesort(items,delegate(int  first,int  second));

總之,自c#2.0開始,可以利用匿名方法這一新特性來宣告乙個沒有名字的方法,該方法將被自動轉換成乙個委託。

3、無引數的匿名方法

沒有引數的匿名方法可以省略引數列表 例如:delegate

帶有命名方法的委託與帶有匿名方法的委託

在 2.0 之前的 c 版本中,宣告委託的唯一方法是使用命名方法。c 2.0 引入了匿名方法,而在 c 3.0 及更高版本中,lambda 表示式取代了匿名方法,作為編寫內聯 的首選方式。不過,本主題中有關匿名方法的資訊同樣也適用於 lambda 表示式。有一種情況下,匿名方法提供了 lambda ...

C 傳統的委託 匿名方法 Lambda對比

using system using system.collections.generic using system.linq using system.text namespace lambdademo 傳統的呼叫委託的示例 static void findlistdelegate predica...

委託的宣告與例項化使用

系統訪問資料或呼叫方法有兩種操作方式 一種是通過名稱訪問或呼叫,另一種是通過所在的記憶體位址來訪問呼叫。為了系統的安全與穩定,net framework的clr庫不允許程式通過指標來直接操作記憶體中資料或方法,而是通過託管機制 來訪問記憶體中資料或呼叫記憶體中的方法。委託就是c 提供的一種以託管機制...