法庭上律師為當事人辯護,他真正執行的是當事人的陳詞,律師就相當於一個委托對象,而當事人則委托律師對象為自己辯護。
c#中的委托概念也就好比律師對象,它是一個類(“委托是類類型”這個事實將在“委托本質”部分進行詳細介紹),因為只有類才有對象的概念,這也體現了c#作為一門面向對象語言的特性。
c#中的委托可以理解為函數的一個包裝,它使得c#中的函數可以作為參數來被傳遞,這在作用上相當於c++中的函數指針。c++用函數指針獲取函數的入口地址,然后通過這個指針來實現對函數的操作。
委托的定義和方法的定義類似,只是在定義的前面多了一個delegate關鍵字。如下定義:
public delegate void MyDelegate(int para1, string para2);
委托能包裝的方法是有一定限制的,例如能被前面的委托類型MyDelegate包裝的方法需要滿足以下條件:
1.方法的返回類型必須為void;
2.方法必須有兩個參數,並且第一個參數應為int類型,第二個參數為string類型。
總結:可以被委托包裝的方法必須滿足以下規則:
1.方法的簽名必須與委托一致,方法簽名包括參數的個數、類型和順序;
2.方法的返回類型要和委托一致,注意,方法的返回類型不屬於方法簽名的一部分。