<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【編程思想】C# delegate 委托的本質(zhì):方法對象的應(yīng)用

      一、前言

          翻回之前寫的博客,前期寫的結(jié)構(gòu)確實差很多,

          這次細(xì)看了《委托那些事(一)、(二)》,忍不住重新寫一下,之前把簡單的事情復(fù)雜化了。

          為什么現(xiàn)在思維不一樣了,有一點我認(rèn)為是見識的計算機(jī)語言多了,會比較語法:為什么它要這么設(shè)計。

       

      二、委托的本質(zhì)

          首先有一點,萬物皆對象,方法也是對象

          C# 方法的類型是: Func(執(zhí)行有返回參數(shù))或者 Action(執(zhí)行無返回)。

       

        委托(delegate)

            就是語法,包裝這么一個事情:

            當(dāng)需要實現(xiàn)執(zhí)行對象A的a方法時,就觸發(fā)執(zhí)行方法b、c、d..,并且方法b、c、d..可以按需定義。

            注:delegate關(guān)鍵詞的用法,見鏈接

            這個關(guān)鍵詞存在就是增加語法復(fù)雜度,C#語法糖升級,可以使用類型Func或Action,這比delegate更清爽。

       

        事件(event)

              方法b、c、d..的容器,可以往里放方法對象,也可以拿出來。

       

        訂閱(event += 方法)

            往方法容器(event)里面放入方法對象,這個動作叫做訂閱。event 類型支持 += 方法 的用法。

       

        退訂/取消訂閱(event -= 方法)

            往方法容器(event)里面移出方法對象,這個動作是取消訂閱,也即退訂。event 類型支持 -= 方法 的用法。

       

      三、示例代碼

      public delegate void OrderEventHandler(Customer cus, OrderEventArgs e); // 后綴EventHandler 是習(xí)慣命名
      
      public class OrderEventArgs : EventArgs    // 習(xí)慣把xxEventArgs 繼承于C#自帶的EventArgs
      {
          public string DishName { get; set;} 
          public string Size { get; set;} 
      }
      
      public class Customer
      {
          private OrderEventHandler orderEventHandler;
          public event OrderEventHandler Order {             // 容器只接受OrderEventHandler 的方法簽名
              add { this.orderEventHandler += value;}         // 和get、set一樣的,換了個名字
              remove { this.orderEventHandler -= value;}
          }
      
          public void ThinkForOrder ()                        // 顧客下單
          {
               if (this.orderEventHandler != null ) // 容器里面存在方法時,就不為空
               {  
                     // invoke(xxA, xxB) 即執(zhí)行容器內(nèi)的所有方法,xxA、xxB類型由OrderEventHandler 指定
                     this.orderEventHandler.Invoke(this, new orderEventArgs{ 。。});
               }
          }
      }

       

      遙想起,初學(xué)delegate的時候,看代碼看得很痛苦,覺得很繞,現(xiàn)在看來……

      就這 ?

       

      posted @ 2023-01-14 02:09  Carcar019  閱讀(55)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 综合欧美视频一区二区三区| 天天综合色一区二区三区| 潮喷失禁大喷水无码| 四虎永久播放地址免费| 国产一区二区av天堂热| 中文字幕在线观看亚洲日韩| 国产网友愉拍精品视频手机| 国产免费午夜福利在线播放| 91久久精品美女高潮不断| 色琪琪丁香婷婷综合久久| 国产一区二区不卡精品视频| 中文字幕理伦午夜福利片| 黑人巨茎大战白人美女| 国产精品爽爽va在线观看网站| 欧美国产精品啪啪| 部精品久久久久久久久 | аⅴ天堂中文在线网 | 国产精品久久久天天影视香蕉 | 免费无码无遮挡裸体视频在线观看| 奇米影视7777狠狠狠狠色| 黑人好猛厉害爽受不了好大撑| 在线涩涩免费观看国产精品| 惠水县| 亚洲精品区午夜亚洲精品区| 在线亚洲妇色中文色综合| 亚洲国产精品久久久天堂麻豆宅男 | 国产成人精品一区二区三| 无码人妻一区二区三区免费N鬼沢| 99精品国产中文字幕| 色综合色综合久久综合频道| av新版天堂在线观看| 日韩人妻无码一区二区三区俄罗斯| 国产成人永久免费av在线| 亚洲sm另类一区二区三区| 久久精品道一区二区三区| 国产成人精品亚洲日本在线观看| 中文字幕国产精品二区| 国产成人午夜精品永久免费| 高级会所人妻互换94部分| 久久AV中文综合一区二区| 看全色黄大黄大色免费久久|