作者godman362 (Shizuru)
看板NUU_CSIE
标题[心得] deleate & Event (2)
时间Sat May 9 14:41:55 2009
上一篇提到delegate的部份
虽然大致上基本的东西都讲清楚了
不过有些实作上的规矩还是来强调一下好了,以下:
public delegate type DelegateName(
Parameter );
像上面这个delegate的宣告,就必须在一个class里面
不可以在namespace底下直接宣告
Eg.
(1)
namespace NameSpace_Name
{
public delegate void DelegateName (
Parameter );
//Wrong
......
......
......
......
}
(2)
namespace NameSpace_Name
{
class Program
{
public delegate void DelegateName (
void );
//Right
}
......
......
......
......
}
(3)
namespace NameSpace_Name
{
delegate void DelegateName ( void )
//Right
}
再来,delegate一次可以做多少事情?
答案:
不知道,我没测过他的极限
这也就是说,一个delegate可以做很多事情,但是是
依序进行
这个可以做很多事情的delegate,称之为
Multicast(包涵
多重委派、
多重事件)
接着就要问,怎麽让他一次做很多事情?
很简单,只要将函数用「+=」的方式加入这个delegate中
然後呼叫这个delegate,就可以
依序帮你做完你指定的工作
所以,再来个范例吧
Eg.
public delegate void SH_Delegate(
void );
public static void Show(
void )
{
Console.WriteLine("Hi, Mr.Hill .");
}
public static void Say(
void )
{
Console.WriteLine("Say Love for you .");
}
private static void main(
string[] args )
{
SH_Delegate FuncPtr = new SH_Delegate(Show);
FuncPtr = new SH_Delegate(Say);
FuncPtr();
}
在main中,我指定了Show Function函数给FuncPtr
下面又用「+=」将Say Function给FuncPtr
所以目前的FuncPtr会有两个Function
但是他是以
Queue的方式来呼叫所assign的函数,就是前面说提到的「
依序」
也就是说,在呼叫FuncPtr之後
会先执行Show,在执行Say
呃,这篇似乎又没讲到Event
那下一篇再见(?)
--
ˍˍ
很多人在即将失去的时候,不知他即将失去,最後他就真正失去 ▕天险▏
其实,一个不曾失去的人最可怜。因为,他永远学不会什麽叫珍惜。▕刀藏▏
 ̄ ̄
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.118.46.59
1F:推 sct830:前几天我也在看委派的东西 可是我写在网志上 可以参考看 05/09 22:14
2F:→ sct830:我不会缩网址= = www.wretch.cc/blog/stt830/32257454 05/09 22:15
3F:→ godman362:其中你提到的Invoke 05/10 07:17
4F:→ godman362:其实可用可不用 05/10 07:18
5F:→ godman362:FuncPtr.Invoke()和FuncPtr()其实一样 05/10 07:18
※ 编辑: godman362 来自: 122.118.55.133 (05/10 22:10)