網頁

搜尋此網誌

2009年4月14日 星期二

C#進階討論

這篇紀錄一些C#中比較難懂的觀念。

Delegate(委派)

參考MSDN:http://msdn.microsoft.com/zh-tw/library/ms173171.aspx

先來看看幾個說明:
  • A delegate is a type that enables you to store references to function.
  • A delagate is a variable type that enables you to use functions indirectly.
  • A delagate can be used to call any function that matches the return type and parameters defined by delegate, giving you the ability to choose between several functions at runtime.
Delegate主要是用在事件(Event)處理函式(EventHandler)上面,之後可以注意其使用方式。

Delegate的使用方式需要宣告函式(function)的回傳值型別(return type)和參數列表(parameter list),用起來就好像宣告變數一樣。像是這樣:

delegate double ProcessDelegate(double param1, double param2);

宣告(declaration)完之後,可以把這個delegate當作型態來宣告一個變數(variable),也可以將delegate設定為具有相同回傳值型別(return type)和參數列表(parameter list)的函式,設定方式必須用關鍵字new的方式,和變數指定給值的方式不太一樣。太神了吧!把函式當變數來使用...(以前學C++好像沒這種觀念),像是這樣:

double RefernceFunction(double param1, double param2)
{
//程式碼
}


ProcessDelegate p;//宣告delegate變數p

p=new ProcessDelegate(RefernceFunction);//指定p的值

p(argu1,argu2);//呼叫RefernceFunction執行,其引數為argu1,argu2。


一旦上述設定完成,你就可以設定delegate的變數(因為delegate是function,需要傳入引數(argument),其實觀念是相同的),這時候所對映的function就會自動被呼叫執行。

沒有留言:

張貼留言

熱門文章