作者godman362 (Shizuru)
看板NUU_CSIE
標題[心得] delegate & Event (1)
時間Sat May 9 11:16:48 2009
花了半天~一天的時間
把C#的delegate和Event稍微看懂了一些
以下,開始分享:
首先,來講
delegate
簡單來說,他就是
Function Pointer
學弟妹看不懂沒關係,函數指標算是進階的程式設計
沒有學過也是很正常的,不過這邊我就不提了
除非有人需要,我會在另外貼一篇講解
那
delegate既然是
Function Pointer
有個Pointer,想必就是指到某個東西
而前面的英文修飾詞是「Function」,所以就是
指向函數的指標
那好,要給delegate的函數,則型態必須同於delegate所宣告的樣板
Eg.
public delegate void FuncPtr(
void );
在這邊,我用回傳值為void,且沒有參數的delegate
也就是這個delegate只能放如下類型的函數:
void FuncName( void );
那再來一個例子
Eg.
public delegate int FuncPtr(
int ,
float );
像上面這個,他的delegate只能放如下函數:
int FuncName( int , float );
整體的用法大概就像下面這樣
public delegate void TestFunc(
void );
public static void ShowSTH(
void )
{
Console.WriteLine("Hi, Mr.Hill .");
}
static void main()
{
TestFunc FuncPtr = new TestFunc(ShowSTH);
//Call ShowSTH Function
FuncPtr();
}
在上面,可以看到ShowSTH assign 給 FuncPtr
用C/C++的話來說,就是FuncPtr指向ShowSTH
所以就可以呼叫FuncPtr,就代表呼叫ShowSTH這個Function
delegate大致就是這樣的用法,有興趣的歡迎指教。
Event就留到下一篇,打的有點累了~"~
--
【一路說到掛】 ︻
空谷殘聲 簫中劍 蕭無人 簫中劍 空谷殘聲 簫中劍 現
正
瘋狂兌現俠道精神 熱
映
黃文擇拒絕再配音的武痴傳人 ︼
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.118.48.6
1F:推 sct830:測試了一下 Delegate 和 delegate 是不一樣的唷~ 要注意~ 05/17 16:24
2F:推 sct830:在主程式中main 沒辦法編譯過 因為會找不到進入點 05/17 16:26
3F:→ sct830:所以 原文的main 改成大寫 compiler才會過~科科 05/17 16:26
4F:→ sct830:沒說完整= = 我的環境是VS08 C# DEV應該不用大寫 05/17 20:12