首先,委托的使用场景:A的某些功能,只有在B须要触发时触发,委托就是用来作中间通信的渠道。spa
假设:如今有个大佬A,A有个小弟B,B在受到羞辱时就会经过电话Delegate通知A本身被羞辱了,A在这时就会对B的电话做出反应,要么置之不理,要么带人报复,B经过电话通知A,须要电话号码,这里的号码,这里的号码能够视为delegate的参数。code
public class Boss //大佬A { CallBoss _bossPhont { get; set; } //A的电话 Boy boys; //小弟B public Boss() { _bossPhont = new CallBoss(OnRevenge); boys = new Boy(); boys._Phone = _bossPhont; //把本身号码告诉B } public int OnRevenge(int boynumbner) //接到B的求救电话 { return 10; //报复,带了10我的 } } public class Boy //小弟B { public CallBoss _Phone { get; set; }//B的电话 public void Shamed() //被羞辱了 { if (_Phone != null) //打电话,不知道号码,或者没带电话,那智能哑吧吃黄连 { _Phone(111); //带了电话,找大佬A } } } public delegate int CallBoss(int bossnumber); //电话 bossnumber是A的号码