系統訪問數據或調用方法有兩種操作方式:一種是通過名稱訪問或調用,另一種是通過所在的內存地址來訪問調用。為了系統的安全與穩定,NET
Framework的CLR庫不允許程序通過指針來直接操作內存中數據或方法,而是通過托管機制來訪問內存中數據或調用內存中的方法。委托就是C#提供的一種以托管機制調用方法的特殊數據類型,其作用於房屋租憑中介機構類似。
下面我們要所的主要圍繞以下三點
//1.定義委托
//2.委托的實例化
//3.委托的調用,實際上是將委托指向已經實現的某個方法
//注意:調用的方法必須返回類型和定義的委托返回類型一致
委托是一個類,它定義了方法的類型,使得可以將方法當做參數進行傳遞。
一:委托的定義
在C#中使用關鍵字delegate聲明委托。聲明委托的一般形式是:
//委托的定義
例如:Delegate void d(int x)
Delegate void d(int x) delegate void D(int x); class C { public static void M1(int i) {...} public void M2(int i) {...} } class Test { static void Main() { D cd1 = new D(C.M1); // static method Test t = new C(); D cd2 = new D(t.M2); // instance method D cd3 = new D(cd2); // another delegate } }
public delegate int MathOp(int i,int j);//定義委托 class DelegateTest { public static int add(int i, int j) {//方法 return i + j; } public static int Mutiply(int num1, int num2) {//方法 return num1 * num2; } static void Main(string[] args) { MathOp mo = new MathOp(add);//委托的實例化,指向add方法 MathOp maOp = new MathOp(Mutiply);//委托的實例化,指向Mutiply方法 Console.WriteLine(mo(10, 20));//委托的調用 Console.WriteLine(maOp(4, 5));//委托的調用 Console.ReadLine(); } } }