很多新童鞋对委托和事件仍然感觉比较绕,我就说说我的特殊的看法吧(委托)
可能我说的比较乱,不过都是我的想法,先说下委托吧!
先说一个现实中遇到的问题,假如你电脑某一天坏了,你不会修,也不想送修,于是你要打电话给客服部,客服部派维修员去你家给你修,于是你的电脑好了。
抽象一下这个事情:
你: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,当然如果他会的话。
+=就是做了这件做那件,
-=就是少做这件吧
=就是你就给我做这一件吧。
当然委托相当大的一个用处就是处理事件,这个下一篇文章再写吧。希望这个例子能帮到大家。
谢谢。
浙公网安备 33010602011771号