昨天說委派讓我們可以傳遞方法,到C#2.0時委派語法有些簡化,也能實作匿名方法來傳遞。
昨天提到C#1.0的委派撰寫方式如下:
而C#2.0可以省略new委派型別的字樣
委派 委派s = new 委派(通知A); //省略前
委派 委派s = 通知A; //省略後
昨天還說我們把方法交給委派物件來傳遞:
public class 計算
{
public delegate void 委派();
public void 計算總和(委派 被委派的事情)
{
int 總和 = 0;
for (int j = 0; j <= 10; j++)
{
總和 = 總和 + j;
}
被委派的事情.Invoke();
}
}
所以在C#2.0中使用計算物件中的委派,可以省略new委派型別
在C#2.0傳遞委派時也可以省略宣告委派型別,直接把通知A方法傳遞給計算總和方法:
可以看到編譯器會自動幫我們將方法包裝成,傳入型別定義的new委派。
C# 2.0開始提供匿名函式(方法就是函式),有些書會寫成匿名方法,意思是說,若我們要傳遞的方法很簡單,其實只有委派對象要用,可以delegate省略方法宣告。
例如以下通知A方法的動作只有console
不撰寫方法A的話,在C#2.0可以成以下匿名函式:
算數.計算總和( delegate {Console.WriteLine("報告A已經計算完成"); } );
沒有傳入值就不用寫括號,要寫括號也可以:
如果有傳入值就寫在括號裡: