摘要 委托的动态添加与移除,委托返回值,匿名委托。 正文 委托的动态添加与移除 通过增加方法,移除方法 delegateintMyDel(intx,inty);intAdd(intx,inty){returnxy;}intMinus(intx,inty){returnxy;}privatevoidbtnShowClick(objectsender,EventArgse){MyDeldel1newMyDel(Add);del1newMyDel(Minus);del1newMyDel(Minus);intxdel1(2,3);MessageBox。Show(x。ToString());} 调用带返回值的委托 如果委托有返回值并且在调用列表中有一个以上的方法,会发生下面的情况。调用列表中最后一个方法返回的值就是委托调用返回的值。调用列表中所有其他方法的返回值都会被忽略。delegateintMyDel(intx);intsum5;intAdd(intx){sumx;returnsum;}intMinus(intx){sumx;returnsum;}privatevoidbtnShowClick(objectsender,EventArgse){MyDeldel1newMyDel(Add);del1newMyDel(Minus);del1(2);MessageBox。Show(sum。ToString());} 匿名方法 如果方法只会使用一次,我们用匿名方法就方便多了 delegateintMyDel(intx);privatevoidbtnShowClick(objectsender,EventArgse){MyDeldeldelegate(intx){returnx20;};MessageBox。Show(del(10)。ToString());} Lambda表达式 删除delegate关键字; 在参数列表和匿名方法主体之间放Lambdai运算符。Lambdai运算符读作goesto。privatevoidbtnShowClick(objectsender,EventArgse){MyDeldel1(x){returnx10;};MessageBox。Show(del1(10)。ToString());}