C#委託
委託(delegate)也叫代表。它實際上相當於C#中的指針原型,與指針不同的是,委託是安全的,而使用指針的時候就必須聲明代碼是”非安全的”。
在聲明委託時,只需要指定指向的原型類型即可。比如我們用下面的代碼聲明一個指向字符類型的函數原型的委託:
delegate string TestDelegate();
如果我們聲明瞭一個委託,那麼它就是對系統定義的類System.delegate的一個擴展。在委託的實例中,我們可以封裝一個靜態的方法,也可以封裝非靜態方法。關於委託的用法,我們來看看下面這個例子:
using System;
delegate string MyDelegate(); //聲明一個委託
public class Mydg {
//非靜態方法聲明
public string Mydg_Normal() {
return "非靜態方法調用";
}
//static靜態方法聲明
public static string Mydg_Static() {
return "靜態方法調用";
}
}
public class UserPerson {
//定義程序入口
public static void Main() {
Mydg dg = new Mydg();
//非靜態方法調用
MyDelegate d = new MyDelegate(dg.Mydg_Normal);
Console.WriteLine(d());
//靜態方法調用,只能用類名Mydg.Mydg_Static,不能寫dg.Mydg_Static
d = new MyDelegate(Mydg.Mydg_Static);
Console.WriteLine(d());
}
}
該程序輸出的結果是:
非靜態委託調用
靜態委託調用