国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

(七)CSharp-CSharp圖解教程版-事件

這篇具有很好參考價值的文章主要介紹了(七)CSharp-CSharp圖解教程版-事件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、發(fā)布者和訂閱者

發(fā)布者/訂閱者模式(publish/subscriber pattern): 很多程序都有一個共同的需求,即當一個特定的程序事件發(fā)生時,程序的其他部分可以得到該事件已經(jīng)發(fā)生的通知。

發(fā)布者:

  • 發(fā)布者類定義了一系列程序的其他部分可能感興趣的事件。
  • 發(fā)布某個事件的類或結(jié)構(gòu),其他類可以在該事件發(fā)生時得到通知。

訂閱者:

  • 訂閱者類可以“注冊”,以便在這些事件發(fā)生時收到發(fā)布者的通知。這些訂閱者類通過向發(fā)布者提供一個方法來“注冊”以獲取通知。
  • 注冊并在事件發(fā)生時得到通知的類或結(jié)構(gòu)。

事件:

  • 當事件發(fā)生時,發(fā)布者“觸發(fā)事件”,然后執(zhí)行訂閱者提交的所有事件。
  • 調(diào)用(invoke)或觸發(fā)(fire)事件的術語。當事件被觸發(fā)時,所有注冊到它的方法都會被依次調(diào)用。

事件是一種特殊的多播委托。(術語定義來源:Microsoft 開發(fā)文檔:事件)
事件是類或結(jié)構(gòu)的成員。

事件處理程序:

  • 回調(diào)方法。由訂閱者提供的方法稱為回調(diào)方法,因為發(fā)布者通過執(zhí)行這些方法來“往回調(diào)用訂閱者的方法”。它們是為處理事件而調(diào)用的代碼。
  • 由訂閱者注冊到事件的行為,在發(fā)布者出發(fā)事件時執(zhí)行。

(七)CSharp-CSharp圖解教程版-事件

事件包含了一個私有的委托。

(七)CSharp-CSharp圖解教程版-事件

有關事件的私有委托:

  • 事件提供了對它的私有控制委托的結(jié)構(gòu)化訪問。也就是說,你無法直接訪問委托。
  • 事件中可用的操作比委托要少,對于事件我們只可以添加、刪除或者調(diào)用事件處理程序。
  • 事件被觸發(fā)時,它調(diào)用委托來依次調(diào)用調(diào)用列表中的方法。

圖15-3演示:

(七)CSharp-CSharp圖解教程版-事件

  • Incrementer 定義了一個 CountedADozen 事件。
  • 訂閱者類 Dozens 和 SomeItherClass 各有一個注冊到 CountedADozen 事件的事件處理程序。
  • 每當觸發(fā)事件時,都會調(diào)用這些處理程序。

二、源代碼組件概覽

源代碼組件:

  • 委托類型聲明: 事件和事件處理程序必須有共同的簽名和返回類型,它們通過委托類型進行描述。
  • 事件處理程序聲明: 訂閱者類中會在事件觸發(fā)時執(zhí)行的方法聲明。它們不一定是顯式命名的方法,還可以是匿名方法或 Lambda 表達式。
  • 事件聲明: 發(fā)布者類必須聲明一個訂閱者可以注冊的事件成員。當類聲明的事件為 public 時,稱為發(fā)布了事件。
  • 事件注冊: 訂閱者必須注冊事件才能在事件被觸發(fā)時得到通知。這是將事件處理程序與事件相連的代碼。
  • 觸發(fā)事件的代碼: 發(fā)布者類中的”觸發(fā)“事件并導致調(diào)用注冊的所有事件處理器的代碼。

(七)CSharp-CSharp圖解教程版-事件

三、聲明事件

public event EventHandler CountedADpzen;

//聲明多個事件
public event EventHandler MyEvent1,MyEvent2,OtherEvent;

//靜態(tài)事件
public static event EventHandler CountedADozen;

事件是類或結(jié)構(gòu)的成員。
由于事件是成員:

  • 我們不能在一段可執(zhí)行代碼中聲明事件;
  • 它必須聲明在類或結(jié)構(gòu)中,和其他成員一樣。

事件成員被隱式自動初始化為 null;

四、訂閱事件

訂閱者向事件添加事件處理程序。

  • 使用 += 運算符來為事件添加事件處理程序。

  • 事件處理程序的規(guī)范可以是以下任意一種:文章來源地址http://www.zghlxwxcb.cn/news/detail-478642.html

    • 實例方法的名稱;
    • 靜態(tài)方法的名稱;
    • 匿名方法;
    • Lambda 表達式。

到了這里,關于(七)CSharp-CSharp圖解教程版-事件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包