1. <bdo id="8zfej"></bdo>
    <li id="8zfej"><meter id="8zfej"><th id="8zfej"></th></meter></li>

    南京中博教育

    全國(guó)咨詢電話:17368476151

    三分鐘了解中博教育
    當(dāng)前位置:南京中博教育 > 學(xué)習(xí)園地 > 編程技巧

    .NET自定義事件小結(jié)

    來(lái)源:南京北大青鳥(niǎo)張府園校區(qū)? ? ? 作者:IT教育 ? ??

    關(guān)于事件各位應(yīng)該都不陌生,相信每個(gè)程序員都可以拍著胸脯說(shuō)“事件?我知道啊~”,可如何自定義事件?也許有人心中就不是那么底氣十足了。

    關(guān)于事件各位應(yīng)該都不陌生,相信每個(gè)程序員都可以拍著胸脯說(shuō)“事件?我知道啊~”,可如何自定義事件?也許有人心中就不是那么底氣十足了。還是老規(guī)矩吧,高手繞行~

    用很多地方都被引用到泛濫的一個(gè)例子來(lái)寫吧,始作俑者就不去深究了。描述是這樣的:小偷進(jìn)入時(shí),事件發(fā)送者(貓)發(fā)送貓叫事件(自定義),(事件接收者)主人訂閱貓叫事件并處理(抓住小偷),事件的參數(shù)傳遞的是小偷的數(shù)量。

    下面就給出實(shí)現(xiàn)的具體步驟---已經(jīng)在代碼注釋中標(biāo)明,以供各位博友抽象出自定義事件的流程。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace 自定義事件
    {
        //http://www.cnblogs.com/DebugLZQ
        //自定義事件步驟的示例代碼

        //0.定義事件傳遞的參數(shù)
        class AlarmEventArgs : EventArgs
        {
            public  int numberOfThief;
            public AlarmEventArgs(int n)
            {
                numberOfThief = n;
            }
        }
        //事件的發(fā)出者
        class Dog
        {
            //1.聲明事件的委托
            public delegate void AlarmEventHandler(Object sender, AlarmEventArgs e);
            //2.聲明事件
            public event AlarmEventHandler Alarm;
            //3.引發(fā)事件的函數(shù)
            public void OnAlarm(AlarmEventArgs e)
            {
                if (this.Alarm != null)
                {
                    Console.WriteLine("The dog is Wangwang...");
                    this.Alarm(this, e);               
                }
            }
        }
        //事件的訂閱者
        class Host
        {
            //4.訂閱事件
            public Host(Dog dog)
            {
                dog.Alarm += new Dog.AlarmEventHandler(HostHandleEvent);
            }
            //5.事件處理程序
            public void HostHandleEvent(Object sender, AlarmEventArgs e)
            {
                Console.WriteLine("Host caught the thief! The sum is "+e.numberOfThief);
            }
        }
       
        class Program
        {
            static void Main(string[] args)
            {
               
                Console.WriteLine("Program is running...");

                Dog dog = new Dog();
                Host host = new Host(dog);

                Console.WriteLine("Someone is coming...");
                //6.在合適的時(shí)候引發(fā)事件
                AlarmEventArgs alarmEventArgs = new AlarmEventArgs(3);
                dog.OnAlarm(alarmEventArgs);

                Console.ReadKey();
            }
        }
    }

    程序運(yùn)行結(jié)果如下:

    北大青鳥(niǎo)軟件學(xué)校職業(yè)教育

    例子很簡(jiǎn)單,我是按照順序?qū)懙模诖a中也有詳細(xì)的步驟注釋,就不多講了。一般經(jīng)驗(yàn)來(lái)講,自定義的東西往往是很有用的,而往往也不是人人能夠掌握。


    分享到:
    近期文章

    搶試聽(tīng)名額

    名額僅剩66名

    教育改變生活

    WE CHANGE LIVES

    主站蜘蛛池模板: 色久综合网精品一区二区| 国产尹人香蕉综合在线电影| 狠狠色伊人久久精品综合网| 天堂无码久久综合东京热| 一本色道久久综合亚洲精品| 色天使亚洲综合在线观看| 国产99久久亚洲综合精品| 97久久综合精品久久久综合 | 狠狠色丁香婷婷综合久久来来去| 亚洲国产一成久久精品国产成人综合 | 伊人色综合一区二区三区| 亚洲五月综合缴情婷婷| 久久久久噜噜噜亚洲熟女综合| 99久久亚洲综合精品成人网| 国产成人综合日韩精品无码| 丁香婷婷亚洲六月综合色| 久久午夜综合久久| 一本色道久久88亚洲综合 | 国产色综合一二三四| 色噜噜狠狠色综合中文字幕| 91综合久久婷婷久久| 亚洲狠狠婷婷综合久久久久| 老色鬼久久综合第一| 色偷偷亚洲第一综合网| 一本一本久久a久久综合精品蜜桃| 久久久久久久综合| 亚洲狠狠婷婷综合久久久久| 一本色道久久综合亚洲精品| 国产精品天干天干综合网| 中文字幕乱码人妻综合二区三区| 五月综合色婷婷在线观看| 一本一道久久综合狠狠老| 国产亚洲综合网曝门系列| 国产成人综合久久综合| 亚洲五月激情综合图片区| 亚洲国产综合精品| 色综合视频一区中文字幕| 国产精品综合在线| 日韩亚洲人成在线综合日本 | 国产精品亚洲综合专区片高清久久久 | 一本丁香综合久久久久不卡网站|