+=運算符-=運算符學習到了多播委托了 ,現(xiàn)在來聊聊+=運算符 以及-=運算符 在之前的學習中 我們知道 +=運算符是用于自加運算的 ,但是 在 委托之中 ,+=運算符又有了新的含義 先看一個實例: 首先定義一個委托類型public delegate void del(int a,int b); 然后定義一個委托變量 : del 委托;好了 ,現(xiàn)在假設 我們有以下幾個方法要使用該類型的委托: 1)voidadd(int a,int b) { console.writeline(a+b); } 2) void minus(int a,int b) { console.writeline(a-b); } 3) void ride(int a,int b) { console.writeline(a*b); } 4) void divide (int a,int b) { console.writeline(a/b); }現(xiàn)在 ,我們想輸入兩個整數(shù)然后計算出它們 加減乘除 之后分別結果是多少 ,同時又要限定要使用委托輸出 , 這時你肯定想的是這樣吧: public static void send(int a,int b,del handler) { handler(a,b);}public static void main(string [] args){del delegate1=add;del delegate2=minus;del delegate3=ride;del delegate4=divide;sand(1,2,delegate1);sand(1,2,delegate2);sand(1,2,delegate3);sand(1,2,delegate4);console.readkey();}上述方法確實可行 ,但是,mian方法卻寫的有些太過于 繁瑣了 ,所以 這時使用多播委托就可以大大簡化 代碼,提高效率現(xiàn)在,main方法可以改寫成這樣:public static void mian(string [] args){del delegatesand=add;delegatesand+=minus;delegatesand+=ride;delegatesand+=divide;sand(1,2,delegatesand);console.readkey();}這樣以來就會簡化代碼 ,少申明變量 提高效率了也許,你看到這一段代碼時,你會奇怪,+=不會給delegatesand重新賦值嗎?但是我想說你的擔心是多余的,+=運算符,在我們之前的理解中,它具有賦值的作用,可這里為什么會與上邊的代碼 效果一樣,與你的想象不一致,其實,這里的+=運算符被重載了 ,不再是我們一般理解的:{ int a=0,b=1; a+=b;//此時,a變成了 1}在使用委托時,+=將會被重載,它的作用變成了在不影響已賦值委托變量的前提下,為已賦值的委托變量再次添加一個引用委托方法也就是說,每使用一次 +=運算符,委托變量就會被加入一個委托方法,比如原來 委托變量被賦值了,使用一次+=運算符后,委托變量也就同時作為兩個 委托方法的委托了 ,而且,它們運行的先后順序與添加的先后順序一致。同理,-=運算符在委托使用時其意義為,為現(xiàn)有的委托變量(已賦值)減去一個委托方法例如上例修改下main 方法public static void mian (string [] args){del delegatesand=add;del delegatesand+=minus;del delegatesand+=ride;del delegatesand+=dividel;sand(1,2,delegatesand);console.writeline("---------------------");delegatesand-=add;sand(1,2,delegatesand);console.readkey();}輸出結果: 3 -1 2 0------------------- -1 2 0 第二次的結果中沒有了 add()方法的運算結果這就是-=運算符的作用。
新聞熱點
疑難解答