国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#中委托和事件的區別

2019-11-17 02:54:08
字體:
來源:轉載
供稿:網友

C#中委托和事件的區別

大致來說,委托是一個類,該類內部維護著一個字段,指向一個方法。事件可以被看作一個委托類型的變量,通過事件注冊、取消多個委托或方法。本篇分別通過委托和事件執行多個方法,從中體會兩者的區別。

□ 通過委托執行方法

    class PRogram
    {
        static void Main(string[] args)
        {
            Example example = new Example();
            example.Go();
            Console.ReadKey();
        }
    }
    public class Example
    {
        public delegate void DoSth(string str);
        internal void Go()
        {
            //聲明一個委托變量,并把已知方法作為其構造函數的參數
            DoSth d = new DoSth(Print);
            string str = "Hello,World";
            //通過委托的靜態方法Invoke觸發委托
            d.Invoke(str);
        }
        void Print(string str)
        {
            Console.WriteLine(str);
        }
    }

以上,

○ 在CLR運行時,委托DoSth實際上就一個類,該類有一個參數類型為方法的構造函數,并且提供了一個Invoke實例方法,用來觸發委托的執行。○ 委托DoSth定義了方法的參數和返回類型○ 通過委托DoSth的構造函數,可以把符合定義的方法賦值給委托○ 調用委托的實例方法Invoke執行了方法

但,實際上讓委托執行方法還有另外一種方式,那就是:委托變量(參數列表)

    public class Example
    {
        public delegate void DoSth(object sender, EventArgs e);
        internal void Go()
        {
            //聲明一個委托變量,并把已知方法作為其構造函數的參數
            DoSth d = new DoSth(Print);
            object sender = 10;
            EventArgs e = new EventArgs();

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 锡林郭勒盟| 南漳县| 张掖市| 友谊县| 九龙坡区| 迁安市| 佛坪县| 兴国县| 同仁县| 乡城县| 沙雅县| 肃南| 阜宁县| 保康县| 潢川县| 濮阳县| 池州市| 阜南县| 临洮县| 洛宁县| 满城县| 肇庆市| 昌平区| 雅安市| 丰原市| 洪江市| 浏阳市| 博湖县| 都安| 玛纳斯县| 中牟县| 金沙县| 绥江县| 雷山县| 余干县| 磐石市| 衡阳市| 团风县| 云阳县| 若羌县| 清水县|