久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

大白話(huà)系列之C#委托與事件講解(二)

 冷刃寒冰 2011-07-19

什么是事件?EVENT,?點(diǎn)擊事件,?加載事件?一連串的模糊的概念沖擊著我們?nèi)跣〉哪X袋

那我們首先來(lái)看一下比較正統(tǒng)的感念吧:

事件是類(lèi)在發(fā)生其關(guān)注的事情時(shí)用來(lái)提供通知的一種方式,。

事件的發(fā)生一般都牽扯2個(gè)角色

事件發(fā)行者(Publisher):一個(gè)事件的發(fā)行者,,也稱(chēng)作是發(fā)送者(sender),其實(shí)就是個(gè)對(duì)象,,這個(gè)對(duì)象會(huì)自行維護(hù)本身的狀態(tài)信息,,當(dāng)本身狀態(tài)信息變動(dòng)時(shí),便觸發(fā)一個(gè)事件,,并通知說(shuō)有的事件訂閱者,。

事件訂閱者(Subscriber):對(duì)事件感興趣的對(duì)象,也稱(chēng)為Receiver,,可以注冊(cè)感興趣的事件,,在事件發(fā)行者觸發(fā)一個(gè)事件后,會(huì)自動(dòng)執(zhí)行這段代碼,。

為了更好的讓大家理解上面的概念,,我先什么都不講,我們先來(lái)看一段簡(jiǎn)單的代碼:

 

大白話(huà)系列之C委托與事件講解(二)  - 小月 - 小月代碼
    //發(fā)布者(Publiser)
    public class Publisher
    {
        
//聲明一個(gè)出版的委托
        public delegate void PublishEventHander();
        
//在委托的機(jī)制下我們建立以個(gè)出版事件
        public event PublishEventHander OnPublish;
        
//事件必須要在方法里去觸發(fā),,出版社發(fā)布新書(shū)方法
        public void issue()
        {
            
//如果有人注冊(cè)了這個(gè)事件,,也就是這個(gè)事件不是空
            if (OnPublish != null)
            {
                Console.WriteLine("最新一期的《火影忍者》今天出版哦!");
                OnPublish();
            }
        }
    }

    
//Subscriber 訂閱者,,無(wú)賴(lài)小明
    public class MrMing
    {
        
//對(duì)事件感興趣的事情,,這里指對(duì)出版社的書(shū)感興趣
        public static void Receive()
        {
            Console.WriteLine("嘎嘎,,我已經(jīng)收到最新一期的《火影忍者》啦!,!");       
        }
    }
    
    //Subscriber 訂閱者,,悲情人物小張
    
public class MrZhang
    {
        
//對(duì)事件感興趣的事情
        public static void Receive()
        {
            Console.WriteLine("幼稚,這么大了,,還看《火影忍者》,,SB小明!");
        }
    }

    
class Story
    {
        
public static void Main(string[] args)
        {
            
//實(shí)例化一個(gè)出版社
            Publisher publisher = new Publisher();

            
//給這個(gè)出火影忍者的事件注冊(cè)感興趣的訂閱者,,此例中是小明
            publisher.OnPublish += new Publisher.PublishEventHander(MrMing.Receive);
            
//另一種事件注冊(cè)方式
            
//publisher.OnPublish += MrMing.Receive;

            
//發(fā)布者在這里觸發(fā)出版火影忍者的事件
            publisher.issue();

            Console.ReadKey();
        }
    }
 

編譯結(jié)果如下

 

 

如果童靴們,,從上到下仔細(xì)看一邊的話(huà),我想應(yīng)該知道什么是發(fā)布者,,什么是訂閱者了吧,,那至于事件呢

我們先看這句

publisher.OnPublish += new Publisher.PublishEventHander(MrMing.Receive);

這就是小明向出版社訂閱他喜歡看的火影忍者,小張沒(méi)有訂閱所以小張沒(méi)有收到書(shū),,

 

我們?cè)僮屑?xì)看看這個(gè)賦值語(yǔ)句,,是不是似曾相識(shí)過(guò)呢?是的就是我們?cè)谏弦恢v,,在講委托聲明的時(shí)候,,簡(jiǎn)直就是一個(gè)眸子里刻出來(lái)的嘛

委托賦值:

BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);

所以,大家不要對(duì)事件有什么好怕的,,其實(shí)事件的本質(zhì)就是一個(gè)委托鏈,,

我們看一下事件的聲明:

        //聲明一個(gè)出版的委托
        public delegate void PublishEventHander();
        
//在委托的機(jī)制下我們建立以個(gè)出版事件
        public event PublishEventHander OnPublish;
在我們使用事件的時(shí)候,必須要聲明對(duì)應(yīng)的委托,,而觸發(fā)事件,,其實(shí)就是在使用委托鏈。

好了大家先消化消化這講的內(nèi)容,,我們?cè)谙乱恢v里,,我們會(huì)講到我們期盼已久的Sender,e兩個(gè)神秘的參數(shù)了

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多