系統訪問數據或調用方法有兩種操作方式:一種是通過名稱訪問或調用,另一種是通過所在的內存地址來訪問調用。為了系統的安全與穩定,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();
}
}
}