一、委托的定義:
《高級漢語大詞典》中是如下解釋的:托付給別的人或機構辦理。要說生活中的意思其實大家都能理解,無非是“當某人(機構)需要完成一件自己不能或不應該完成的事情的時候,此人(機構)物色一個合適的且有能力完成此事的人選,然後提供必要的信息,將此事委托給物色到的人(機構)來完成。” C#中的委托是一種引用方法的類型,一旦為委托分配了方法,委托將與該方法具有完全相同的行為,委托方法的使用可以像其他任何方法一樣具有參數和返回值。委托對象能被傳遞給調用該方法引用的代碼而無須知道哪個方法將在編譯時被調用。委托是函數的封裝,它代表一“類”函數。他們都符合一定的簽名:擁有相同的參數列表、返回值類型。同時委托也可以看作是對函數的抽象,是函數的“類”。此時,委托實例代表一個具體的函數。委托應該和類同屬一個層面,使用起來也很象一個類。我們先來看一個委托使用的實例:
public delegate void PrintHandler(string str); // 聲明委托類型 public class PrintStr { public void CallPrint(string input) { Console.WriteLine(input); } } static void Main(string[] args) { PrintStr myPrinter = new PrintStr(); PrintHandler myHandler = null; // 將委托鏈接到方法,來實例化委托 myHandler += new PrintHandler(myPrinter.CallPrint); if (myHandler != null) myHandler("Hello World!"); // 調用委托,相當於匿名調用委托所鏈接的方法 myHandler -= new PrintHandler(myPrinter.CallPrint); if (myHandler == null) Console.WriteLine("myHandler==null"); Console.Read(); }
得到的結果為
Hello World!
myHandler==null