委托我一直没有理解,今天看书,书上写:class Test
{
//声明委托
delegate void SimpleDelegate(); static void Main(string[] args)
{
SimpleDelegate d = new SimpleDelegate(F);
//没有必要为一个方法示例一个委托,然后通过该委托立即调用它。因为直接调用一个方法会更简单。
//d();
MultiCall(d, 10);
}
static void F()
{
Console.WriteLine("Test.F");
}
//在使用匿名时,委托就显示出了其优越性。请看下面:
static void MultiCall(SimpleDelegate d, int count)
{
for (int i = 0; i < count; i++)
d();
}
}看完不是很明白,大家再讨论一下,谁再能解释解释,要通俗易懂的...
{
//声明委托
delegate void SimpleDelegate(); static void Main(string[] args)
{
SimpleDelegate d = new SimpleDelegate(F);
//没有必要为一个方法示例一个委托,然后通过该委托立即调用它。因为直接调用一个方法会更简单。
//d();
MultiCall(d, 10);
}
static void F()
{
Console.WriteLine("Test.F");
}
//在使用匿名时,委托就显示出了其优越性。请看下面:
static void MultiCall(SimpleDelegate d, int count)
{
for (int i = 0; i < count; i++)
d();
}
}看完不是很明白,大家再讨论一下,谁再能解释解释,要通俗易懂的...
“委托”示例
我原来也不太清楚委托的作用。。但是看了1楼的说明,已经明朗化了。说得很清晰阿。
相当于js里面用eval("函数名");
vb里面用 Execute("函数名")实现的目的是一样的,你声明好委托以后则可以将你写好的那些方法动态调用。如果理解有误。请朋友们指正。
PS:不要随意的对帮助你的朋友冷言冷语,这样导致的结果是朋友越来越少。多从自己方面找原因吧。
和delegate string Simpledelegate();
http://topic.csdn.net/u/20080626/17/1742fccb-1513-4543-9f9f-045660d24666.html
如果很多这样的方法呢?张子阳:C# 中的委托和事件
http://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html这篇文章讲的比较易懂。
else if(msg = BNT_RCLICK) DoRBntClick();
else if(msg = DoubleCLICK) DoDoubleClick();
else ...............
如果要处理的消息有100个(windows系统消息有几千个),这样的代码写到最后就要写得手抽筋了.于是聪明的程序员这样来做:struct{
int msg;
void (*fn)(arglist);
}
messageList[] = {
BNT_LCLICK,DoLBntClick,
BNT_RCLICK,DoRBntClick,
DoubleCLICK,DoDoubleClick,
.........................
};定义好后,只要用一个循环.
for(int i=0;i<数据长度,i++){
if(messageList[i].msg == msg){messageList[i].fn();break;}
}
你说有什么用吧!