首先先套用一下書中對於委托的描述 什麼是委托,法庭上律師為當事人辯護,他真正執行的是當事人的陳詞,律師就相當於一個委托對象,而當事人則委托律師對象為自己辯護。 C#中的委托概念就好比律師對象,它是一個類(“委托是類類型”),因為只有類對象才有對象的概念。 C#中的委托可以理解為函數的一個包裝,它可以 ...
首先先套用一下書中對於委托的描述
什麼是委托,法庭上律師為當事人辯護,他真正執行的是當事人的陳詞,律師就相當於一個委托對象,而當事人則委托律師對象為自己辯護。
C#中的委托概念就好比律師對象,它是一個類(“委托是類類型”),因為只有類對象才有對象的概念。
C#中的委托可以理解為函數的一個包裝,它可以使函數作為參數來傳遞,這在作用上相當於C++的函數指針。
委托的定義和方法的定義類似,只是在定義的前面加了一個關鍵詞delegate:
public delegate void myDelegate(string name);
委托能包裝的方法需要滿足一定條件,就是要與委托返回類型相同,參數個數、順序、類型相同,比如:
public void myMethod1(string myName);
public void myMethod2(string yourName);
瞭解了委托是什麼之後,開始一個小例子來使用它
using System; namespace delegateHello { //語言委托 class People { //使用delegate關鍵字來定義一個委托類型 public delegate void helloDelegate(string name); public void hello(string name,helloDelegate helloLanguage) { //調用委托 helloLanguage (name); } //美國人打招呼 public void helloEnglish(string name) { Console.WriteLine ("Hello,{0}", name); } //中國人打招呼 public void helloChinese(string name) { Console.WriteLine ("你好,{0}", name); } public static void Main (string[] args) { People man = new People (); man.hello ("Lucy", man.helloEnglish); man.hello ("李華", man.helloChinese); Console.Read (); //Console.WriteLine ("Hello World!"); } } }