1、什么是委托?
首先聲明一個委托: public delegate string IsLengthFive (string s);
下面寫幾個方法:
public string DoWork(string a){};
public string DoSomeWork(string b){};
public string DoNothing(string c){};
委托是一個類型,它代表着簽名相同的一類方法。所謂簽名相同也就是方法的返回值相同,方法的參數列表相同。
舉例幫助理解(string name = "a"; 在這里string定義了name參數所能代表的值的類型,也就是name參數的類型。在上面例子中的委托IsLengthFive 代表着返回類型為string,參數是一個string類型的所有方法)
2、委托的使用
使用委托前要聲明委托變量,首次聲明委托變量有兩種方式:
a01:IsLengthFive stringLength;
stringLength = DoWork; ///首次先給委托變量賦值
stringLength += DoSomeWork; ///使用 += 方法給委托變量stringLength綁定方法
stringLength += DoNothing;
經過上面的操作此時的 stringLength 已經有三個方法可以進行調用了
a02:IsLengthFive stringLength = new IsLengthFive();
stringLength += DoWork; //首次直接綁定方法到變量上
stringLength += DoSomeWork;
stringLength += DoNothing;
此時的stringLength也代表了三種方法,進行 -= 操作:stringLength -= DoNothing; ,將DoNothing方法解除綁定
為什么要使用委托?
使用委托可以將同類型的方法綁定到同一個變量上,當調用此變量時就可以一次調用綁定的方法,很方便。
什么是事件?(屬性對字段進行封裝)
事件是由 event 關鍵字修飾的委托————那么事件的本質就是一種委托
聲明一個事件就好比聲明了一個進行了封裝的委托類型的變量!
匿名方法在委托中的使用