C 實現帶事件處理的Collection

2021-08-14 14:14:09 字數 1501 閱讀 3786

我們在進行集合處理時,有時希望能夠監視集合的變化,並在滿足一定條件時觸發處理事件。.net框架下似乎(沒見到)沒有這樣的支援,因此有必要我們自己對collection進行擴充套件,以下這個簡單的c#控制台應用程式便給出乙個簡單的方案。

1. 核心實現部分**

using system;

using system.collections.generic;

using system.collections.objectmodel;

using system.linq;

namespace collectionwithevent

public class collectioneventargs: eventargs

public int index

public u item

public collectioneventargs(u item, collectionoperation operation, int index)

}public class collectionwithevents: collection

public collectionwithevents(ienumerableitems)

: base(items.tolist())

protected override void insertitem(int index, t item)

protected override void removeitem(int index)

protected override void setitem(int index, t item)

private void oncollectionchanged(t item, collectionoperation operation, int index)

public void addrange(ienumerableitems)}}

2. 測試物件類定義

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace collectionwithevent

}public stringobj(string val)}}

3. 測試主程式

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace collectionwithevent

private static void eventchanged(object sender, collectioneventargse)}}

當進行集合操作時會觸發繫結的事件,這裡的執行結果如下:

C 中的事件和事件處理

c 中的事件,我覺得和mfc的訊息作用在某些方面是差不多的。這個專案中用到的需求是兩個類之間的資料互動,首先肯定是分為乙個觸發事件的類,乙個處理事件的類。1 首先需要在所有類的外部為事件定義乙個公共訪問型別的 該 為多重 所以 定義方法標識的返回為void型別。一般我們這麼定義 public voi...

C 中的事件處理

萬物皆物件!物件與物件之間不僅僅是存在關係,更是具有千絲萬縷的聯絡。關於物件之間的關係,我們在 sql server 中已經討論過。本文要討論的是它們之間存在的聯絡,即 如何使得乙個物件發生變化時,另乙個物件也能隨之發生變化。這種 乙個物件的狀態改變導致其它物件狀態改變 的現象,我們稱之為事件。在檢...

c 事件的繼承處理

有下面一段 目的是實現事件的繼承 基類 public class basebusiness 派生類 public class mybusiness basebusiness 編譯時提示如下錯誤 事件 basebusiness.progressevent 只能出現在 或 的左邊 從型別 basebus...