很多新童鞋对委托和事件仍然感觉比较绕,我就说说我的特殊的看法吧(委托)

可能我说的比较乱,不过都是我的想法,先说下委托吧!

先说一个现实中遇到的问题,假如你电脑某一天坏了,你不会修,也不想送修,于是你要打电话给客服部,客服部派维修员去你家给你修,于是你的电脑好了。

抽象一下这个事情:

你:AnMan类(比如一个窗体)

电脑:AnMan类的一个字段,私有的(你的电脑当然是你的不是别人的)

你不会修电脑,所以没有Mend方法

客服部:Servers类(比如一个窗体)

客服部拥有:Mend方法,这是必须的,也是私有的(这样才能挣你的钱啊!)

维修员:委托人(可以接受Mend方法,有了Mend方法就会修理电脑了,这是个公有变量,可以出差,可以上门服务)

好了,我们现在开始修电脑,代码如下:

 

 1 //满世界终于找到维修员
 2     public delegate string Mend();
 3     public partial class FrmServers : Form
 4     {
 5         public FrmServers()
 6         {
 7             
 8             InitializeComponent();
 9         }
10         //维修员应该会修电脑方法
11         private string MendCom()
12         {
13             return txtOK.Text;
14         }
15         //服务部派维修员去你家
16         private void btnMend_Click(object sender, EventArgs e)
17         {
18             FrmAnMan fm = new FrmAnMan(MendCom);
19             fm.ShowDialog();
20         }
21     }
 1 public partial class FrmAnMan : Form
 2     {
 3         //打电话叫维修员
 4         Mend mend;
 5         //维修员去你家
 6         public FrmAnMan(Mend mend)
 7         {
 8             this.mend = mend;
 9             InitializeComponent();
10         }
11         //维修员修电脑
12         private void btnCall_Click(object sender, EventArgs e)
13         {
14             if (mend!=null)
15             {
16                 txtCompute.Text= mend();
17             }
18         }
19     }

这只是一个窗口传值的小例子,不过通过身边的事情作为前提,好理解多了吧。

 

委托就是一个类,可以被指派一些相同返回类型和参数列表。然后就可以到处去做这些方法,也就是到处被使唤了。

多播委托其实这么想更简单,就是让维修员修好电脑再给你修一下平板或者Mp5,当然如果他会的话。

+=就是做了这件做那件,

-=就是少做这件吧

=就是你就给我做这一件吧。

 

当然委托相当大的一个用处就是处理事件,这个下一篇文章再写吧。希望这个例子能帮到大家。

 

谢谢。



 

posted @ 2012-04-24 00:14  超Beyond越  阅读(137)  评论(0)    收藏  举报