C#委託

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());
    }
}

該程序輸出的結果是:
非靜態委託調用
靜態委託調用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章