最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#事件實(shí)例詳解

 更新時(shí)間:2017年06月22日 14:19:36   投稿:lqh  
這篇文章主要介紹了C#事件實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下

C#事件實(shí)例詳解

C#和JAVA有許多相似的地方,設(shè)計(jì)思想差不多,語(yǔ)法及其相像,均傳承自面向?qū)ο笤O(shè)計(jì)思想,靈感來自C++并取其精華去其“糟粕(二字持保留意見)”,中間語(yǔ)言、解釋執(zhí)行、一次編譯、到處執(zhí)行,出身豪門算得上是表兄弟關(guān)系,各自擁有龐大的擁躉,兩種語(yǔ)言在發(fā)展的道路你追我趕相互借鑒相互學(xué)習(xí)相互滲透,至于誰(shuí)的IDE更強(qiáng)大對(duì)于一個(gè)用了二十年vim編輯器的人來說實(shí)在無從評(píng)判,強(qiáng)大到讓人內(nèi)牛滿面~

    C#語(yǔ)言中關(guān)于事件(event)結(jié)合代理(delegate)實(shí)現(xiàn)對(duì)象狀態(tài)變更時(shí)的通知機(jī)制,總感覺這種處理有點(diǎn)過于復(fù)雜化了,但既然人家這么設(shè)計(jì)必定有人家的道理,相信并向人家學(xué)習(xí)而不急于批判和否定才能讓自己進(jìn)步的更快,個(gè)人覺得這種處理大概是來自于視窗獨(dú)有的對(duì)各個(gè)控件事件集中快速響應(yīng)的機(jī)制吧,這可能也是從事前后端開發(fā)關(guān)注點(diǎn)的差異,前端重人機(jī)交互當(dāng)然交互的核心就是不確定時(shí)間屬性和狀態(tài)的事件,后端重觸發(fā)每個(gè)事件的發(fā)生基本都是預(yù)定義且流程化構(gòu)建好的,所以接下來嘗試?yán)斫夂徒庾x一下C#的事件。

    第一步:聲明一個(gè)代理,這個(gè)代理可以是系統(tǒng)的也可以是自定義的。

 public delegate void MyDelegate();                   // 聲明無參無返回值代理

  public delegate bool MyDelegate(int k, int v);         // 聲明有參有返回值代理

    第二步:創(chuàng)建一個(gè)包含該代理事件的對(duì)象,對(duì)象中調(diào)用代理實(shí)現(xiàn)事件的處理。

  public class MyArrayList : ArrayList

  {

    public event MyDelegate MyChanged;           // 聲明代理事件

    public override void Add(object o)                // 覆蓋父類方法

    {

       base.Add(o);                              // 調(diào)用父類方法

      OnChanged();                             // 調(diào)用事件函數(shù)

    }

    protected virtual void OnChanged()

    {

      if (null != MyChanged) MyChanged();        // 代理觸發(fā)事件

    }

  }

    第三步:創(chuàng)建一個(gè)類,將事件和代理綁定到一起,a、類構(gòu)造時(shí)以包含代理事件對(duì)象作為入?yún)?,b、“+=”運(yùn)算符實(shí)現(xiàn)綁定,c、在代理中傳入類成員函數(shù)。

 public class MyEvent

  {

    private MyArrayList list;

    public MyEvent(MyArrayList l)

    {

      list = l;

      list.MyChanged += new MyDelegate(ListChanged);    // 綁定事件

    }

    private void ListChanged()                           // 被綁定事件

    {

      System.Console.WriteLine("ListChanged ...");

    }

  }

    第四步:創(chuàng)建含有事件的類的實(shí)例,創(chuàng)建含有方法的類的實(shí)例。

  public class MyTest

  {

    public static void Main()

    {

      MyEvent me = new MyEvent(new MyArrarList());

      me.Add("object_1");

    }

  }

    仔細(xì)研究發(fā)現(xiàn),代理相當(dāng)于C\C++中的函數(shù)指針,但功能更強(qiáng)大,使用更安全,代理實(shí)例在創(chuàng)建的時(shí)候,代理會(huì)把傳給它的參數(shù)傳給綁定的方法,而且代理可以通過“+=”運(yùn)算符搭載更多的方法,下面是對(duì)比C\C++函數(shù)指針的用法。

  char* (*pFun)(char*) = NULL;

  pFun = GtCodeUtf8ToGB2312;

  char* pszData = (*pFun)("計(jì)算機(jī)");

 

  char* GtCodeUtf8ToGB2312(char* pszUtf8)

  {

    char* pszGB2312 = NULL;

    ......

    return pszGB2312;

  }

    再舉兩個(gè)C語(yǔ)言中典型的函數(shù)指針的例子:

    例一:int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);其中第三個(gè)參數(shù)是一個(gè)函數(shù)地址,指向被創(chuàng)建線程的核心處理函數(shù)。

    例二:void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));其中最后一個(gè)參數(shù)也是一個(gè)函數(shù)地址,指向兩個(gè)元素對(duì)比計(jì)算函數(shù)。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • C#關(guān)閉指定名字進(jìn)程的方法

    C#關(guān)閉指定名字進(jìn)程的方法

    這篇文章主要介紹了C#關(guān)閉指定名字進(jìn)程的方法,涉及C#進(jìn)程操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • C#讀取二進(jìn)制文件方法分析

    C#讀取二進(jìn)制文件方法分析

    這篇文章主要介紹了C#讀取二進(jìn)制文件方法,較為詳細(xì)的分析了C#讀取二進(jìn)制文件的原理與注意事項(xiàng),具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • C#抽象類與抽象方法詳解

    C#抽象類與抽象方法詳解

    這篇文章主要為大家詳細(xì)介紹了C#抽象類與抽象方法的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • C#使用Objects?Comparer進(jìn)行對(duì)象比較

    C#使用Objects?Comparer進(jìn)行對(duì)象比較

    本文主要介紹了C#使用Objects?Comparer進(jìn)行對(duì)象比較,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • C#雙緩沖實(shí)現(xiàn)方法(可防止閃屏)

    C#雙緩沖實(shí)現(xiàn)方法(可防止閃屏)

    這篇文章主要介紹了C#雙緩沖實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了C#雙緩沖的具體步驟與相關(guān)技巧,可實(shí)現(xiàn)防止閃屏的功能,需要的朋友可以參考下
    2016-02-02
  • C# Winform 分頁(yè)功能的實(shí)現(xiàn)

    C# Winform 分頁(yè)功能的實(shí)現(xiàn)

    本文主要介紹了C# Winform 分頁(yè)功能的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • js substr,substring與java substring和C# substring的區(qū)別解析

    js substr,substring與java substring和C# substring的區(qū)別解析

    本篇文章主要是對(duì)js中substr,substring與java中substring和C#中substring的區(qū)別進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2014-01-01
  • 詳解C# 中Session的用法

    詳解C# 中Session的用法

    這篇文章主要介紹了C# 中Session的用法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C# ManagementObjectSearcher操作window案例詳解

    C# ManagementObjectSearcher操作window案例詳解

    這篇文章主要介紹了C# ManagementObjectSearcher操作window案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 基于集合的子集與集合的全排列的相關(guān)問題

    基于集合的子集與集合的全排列的相關(guān)問題

    本篇文章介紹了,集合的子集與集合的全排列的相關(guān)系列問題說明,需要的朋友參考下
    2013-05-05

最新評(píng)論

景德镇市| 自治县| 彭泽县| 临沂市| 科技| 兴国县| 滦南县| 确山县| 梁河县| 白沙| 武平县| 麻城市| 峡江县| 德清县| 洪江市| 太康县| 芜湖市| 调兵山市| 沛县| 泗洪县| 综艺| 镇远县| 宜丰县| 青神县| 宜春市| 大渡口区| 兰溪市| 潮州市| 通榆县| 陇川县| 柞水县| 镇远县| 呼图壁县| 武汉市| 丽水市| 新干县| 嘉祥县| 莱阳市| 昂仁县| 七台河市| 库尔勒市|