c 事件使用示例詳解

2022-02-15 11:48:46 字數 1378 閱讀 6334

事件:如果型別定義了事件成員,那麼型別就可以通知其他物件發生了特定的事情。例如,button類提供了乙個名為click的事件。

應用程式中的乙個或者多個物件可能想接收關於這個事件的通知,以便在button被點選後採取操作。

下面我們利用乙個例子來加深我們對事件的理解:假定現在要設計乙個電子郵件應用程式,電子郵件到達時,使用者可能希望將該郵件**給傳真機或其他裝置。構建這個應用程式時,先設計乙個mailmanager的型別,他負責接收傳入的電子郵件,mailmanager型別公布乙個newmail的事件。其他型別,如fax和pager物件可登記對它們對這個事件的關注。

下面上**:

第一步:定義型別來容納所有需要傳送給事件通知接收者的附加資訊

複製**

**如下:

internal class newmaileventargs : eventargs  

public string from}

public string to}

public string subject}          

}注:eventargs只是乙個讓其他型別繼承的基型別。許多事件都沒有附加的資訊要傳遞,但在我們的場景中需要傳遞郵件資訊,就構造newmaileventargs。

第二步:定義事件成員

internal class mailmanager

注:newmail是這個事件的名稱。事件成員的型別是eventhandler,所以方法原型必須具有以下形式:

void methodname(object sender,newmaileventargs e);

第三步:定義負責引發事件的方法來通知事件的登記物件

internal class mailmanager

}第四步:定義方法將輸入轉化為期望事件

internal class mailmanager

}設計偵聽事件型別,下面我們使用fax型別來使用事件,上**

複製**

**如下:

internal sealed class fax

//新的電子郵件到達時,mailmanager將呼叫這個方法

private void faxmsg(object sender,newmaileventargs e)

//執行這個方法,fax物件將向newmail事件登出自己對它的關注

public void unregister(mailmanager mm)

}注:c#編譯器會將+=操作符翻譯成以下**來新增物件對事件的關注:

mm.add_newmail(new eventhandler(this.faxmsg));

這樣我們的例子就完成了,當有新的郵件收到時就會觸發對郵件類事件關注的所有方法,即例子中的fax中的faxmsg方法。例子需要對大家理解事件有所幫助。

C 委託和事件的使用示例

一 委託 使用委託時要先例項化,和類一樣,使用new關鍵字產生委託的新例項,然後將乙個或者多個與委託簽名匹配的方法與委託例項關聯。隨後呼叫委託時,就會呼叫所有與委託例項關聯的方法。與委託關聯可以是任何類或者結構中的方法,可以是靜態方法,只要是可以訪問的方法都可以。1.建立乙個委託型別使用關鍵字del...

C 委託和事件的使用示例

一 委託 使用委託時要先例項化,和類一樣,使用new關鍵字產生委託的新例項,然後將乙個或者多個與委託簽名匹配的方法與委託例項關聯。隨後呼叫委託時,就會呼叫所有與委託例項關聯的方法。與委託關聯可以是任何類或者結構中的方法,可以是靜態方法,只要是可以訪問的方法都可以。1.建立乙個委託型別使用關鍵字del...

簡單C 事件示例

熱水器開始對水加熱,當水加熱到95度以上的時候,熱水器的報警器開始報警,並且在螢幕上顯示當前的水溫。不難從上面的這一小段話看到,要想模擬該程式,需要乙個熱水器物件heater,報警器物件alarm,顯示器物件display。下面邊上 邊解釋吧。熱水器類,用來燒水的 class heater publ...