首先,委託的使用場景: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的號碼