C 學習筆記(十二) 事件高階

2021-04-02 19:07:43 字數 1914 閱讀 7989

多用途的事件處理程式

timer.elapsed

事件的簽名包含了時間處理程式常見的兩個引數:

1.object

source——引發事件的物件的引用2.

elapsedeventargs e

——由事件傳送的引數

在這個事件中使用object型別引數的原因是,我們常常要為由不同物件引發的幾個相同事件使用同一事件處理程式,但仍要指定哪個物件引發了事件。

我們在呼叫處理事件的函式時,傳送乙個引發事件的物件引用,將其作為事件處理程式的乙個引數,就可以為不同的物件定製處理程式的響應。利用該引用可以訪問源物件,包括它的屬性。

通過傳送包含在派生於system.eventargs(與elapsedeventargs相同)的類中的引數,就可以將其他必要資訊作為引數(例如:messagearrivedeventargs類上的message引數)

在實際程式中我們將委託的定義作了如下的修改:

public

delegate

void messagehandler(connection source, messagearrivedeventargs e);

然後又將響應的display類的響應事件處理程式作了如下修改:

public

void displaymessage(connection source, messagearrivedeventargs e)

",source.name);

console.writeline("message text:",e.message);

}

其中用來接收物件並區分物件的是

connection source

,另乙個引數的定義是按照前面將的繼承了system.eventargs進行定義的messagearrivedeventargs,用它來傳遞其他的引數資訊。

到這裡我們就可以完全根據需要自定義我們自己需要響應事件是需要做的事情了,在原來的類不能滿足需要時就進行這種響應的擴充套件即可。

本例的源程式:

connection

類using

system;

using

system.timers;

namespace

ch12ex03

set

}

private timer polltimer;

public connection()

public

void connect()

public

void disconnect()

private

void checkformessage(object source, elapsedeventargs e)

}

} }

class1

類:using

system;

namespace

ch12ex03

}

}

display

類:using

system;

namespace

ch12ex03

",source.name);

console.writeline("message text:",e.message);

} }

}

messagearrivedeventargs

類:using

system;

namespace

ch12ex03

}

public messagearrivedeventargs()

public messagearrivedeventargs(string newmessage)

}

}

c 學習筆記十二

類的操作 1 類物件使用指標的三種情況 一 使用指標成員訪問運算子 來呼叫函式 二 作為函式的引數 三 作為類的資料成員 2 指標作為資料成員 示例 如下 package類 包含兩個資料成員乙個是box類,乙個是指向package的指標 class package get 方法 box getbox...

C 學習筆記十二

標頭檔案 utility 建立 pair p1 pair p2 v1,v2 pair p3 p2 p1 make pair v3,v4 操作 賦值 p3 p1 訪問元素 p1.first p1.second 使用tie獲取 std tie v1,v2 p1 static變數只會被初始化一次 因此,靜...

Python學習筆記(十二)高階變數型別 元祖

1 元祖的定義 元祖表示多個元素組成的序列 元祖在python開發中,有特定的應用場景 索引就是資料在 元祖中的位置編號 建立空元祖 tuple 元祖中 只包含乙個 元素 時,需要 在元素後面新增逗號 2 元組常用操作 在ipython3 中定義乙個元組,例如 info 輸入info.按下tab鍵,...