1.委託delegate
委託delegate也是一種型別,在任何可以宣告類的地方都可以宣告委託,它將方法當做另乙個方法的引數進行傳遞,這樣就可以傳遞不同的方法,完成不同的功能,使程式具有很好的可擴充套件性。
舉例:假設這裡有一台電腦,有人會用它寫程式,有人會用它打遊戲,有人會用它看電影,有人會用它邊聽**邊玩遊戲,有人會用它邊聽**邊看文件,邊上qq。
這台電腦可以抽象成乙個類computer,裡面有個方法dowork,所有的人都要通過這個方法來做自己的事情。
不用委託的時候我們可以實現一些固定的東西,不夠靈活:
例如:
class program}public
class computer
", name, work);
}}
上面的**,很死板,呼叫dowork的時候只能做一件事情。
所以下面輪到委託登場了。
**如下:
publicdelegate
void workeventhandle(string name);
class program
static
void do1(string name) 在上qq!
", name);
console.writeline("
在聽**!
", name);
console.writeline("
在玩遊戲!
", name);
}static
void do2(string name) 在聽**!
", name);
console.writeline("
在寫**!
", name);}}
public
class computer
}
委託總結:
優點:委託可以作為方法的乙個引數來傳遞。誰要呼叫computer裡的dowork來完成自己的事情,誰就實現委託繫結的方法,這樣就可以按照自己的需求傳遞不同的方法,使程式具有了很好的擴充套件性。
缺點:我們可以隨意的給委託進行賦值,這樣就破壞了程式的封裝性。
2. 事件
為了彌補委託的缺陷,所以事件出現了,我們只能對事件進行「+=」和「-=」操作,不可以對事件進行賦值(=)操作。
上面的例項用事件實現如下:
publicdelegate
void workeventhandle(string name);
class program
static
void do1(string name) 在上qq!
", name);
console.writeline("
在聽**!
", name);
console.writeline("
在玩遊戲!
", name);
}static
void do2(string name) 在聽**!
", name);
console.writeline("
在寫**!
", name);}}
public
class computer
}}
總結:
委託既可以進行「+=」和「-=」操作,也可以進行賦值(=)操作,委託不具有封裝性
事件只可以進行「+=」和「-=」操作,事件具有封裝性。
c 委託事件
1,什麼是委託 委託是什麼?從生活理解就像是你是乙個c 程式設計師,你對c 並不了解,當需要進行c 分析的時候你委託給你的一位懂c 的同事幫你來完成 在c 中,委託的作用是這樣描述的 委託就像乙個函式的指標,在程式執行時可以使用它們來呼叫不同的函式。簡單點說,委託能夠引用函式,通過傳遞位址的機制完成...
C 委託事件
一 委託 委託類似於函式指標,但函式指標只能引用靜態方法,而委託既能引用靜態方法,也能引用例項方法。委託使用分三步 1 委託宣告。2 委託例項化。3 委託呼叫。例程一 程式 using system namespace 委託 private int add int num1,int num2 例中,...
C 委託事件
1 namespace222 2324 25 26 建立執行方法 27 28 29 30 31static int stratrun int count,int num count num 3233 34 35 第一步宣告委託 36 37 計算前的總數 38 數字39 計算後的總數 40public...