C#中的委託(與Ruby中的類似,方法看作一個類型)

using System;
class B
{
public delegate  dynamic AMethod();//定義委託 delegate關鍵字 dynamic就是那個
//會各種變的類型,基本萬能的適合,此時AMethod可以看作一個“方法類”的名字 可以利用
//這個名字 創建委託表。注意 ()內可以寫參數,要求與被委託的方法相同,返回類型也是
//因此,委託列表中的方法除了名字不同外,其餘基本相同。
//多用於GUI事件編程
//其實 delegate是個類 System.Multicast.Delegate是他的基類
 
 
public static void Main(){
AMethod[] am={//創建委託表,數組型
A.make,
A.did,
A.pick,
};
 
for(int i=0;i<3;i++){//這裏foreach也行得通
Console.WriteLine("{0} has been done",DoDelegate(am[i]));
}
}
public static  dynamic DoDelegate(AMethod method){//委託列表中的方法將委託給
//DoDelegate,這個方法必須public static(其實是必須能隨時訪問到)
 
return method();//這裏 method是被委託方法類的實例,易懂
}
}
 
class A
{
public static  dynamic make(){
return "A make";
}
public static string did(){
return "A did";
}
public static string pick(){
return "A pick";
}
}
===========================================
 
---------- 運行C#程序 ----------
A make has been done
A did has been done
A pick has been done
 
輸出完成 (耗時 0 秒) - 正常終止
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章